android - 实现滑动时应用程序崩溃

标签 android swipe

我正在我的代码中实现滑动操作来更改背景图像。但是当我运行我的应用程序时它崩溃了。我不知道我的代码有什么问题。

代码-

public class Types extends Activity{

    RelativeLayout layout1;
    int[] backgroundResId;
    int currentIndex=0;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_type);
        backgroundResId=new int[]{R.drawable.back,R.drawable.bg,R.drawable.frame1};
        changeBackground();
        ActivitySwipeDetector activitySwipeDetector = new ActivitySwipeDetector(this);
        layout1.setOnTouchListener(activitySwipeDetector);

    }


    private void changeBackground(){
         findViewById(R.id.layout1).setBackgroundResource(backgroundResId[currentIndex]);
    }

    public class ActivitySwipeDetector implements View.OnTouchListener {

        static final String logTag = "ActivitySwipeDetector";
        static final int MIN_DISTANCE = 100;
        private float downX, upX;
        private Activity activity;

        public ActivitySwipeDetector(Activity activity){
            this.activity = activity;
        }

        public void onRightToLeftSwipe(){
            Log.i(logTag, "RightToLeftSwipe!");
            currentIndex++;
            if(currentIndex<backgroundResId.length){
                 changeBackground();
            }
        }

        public void onLeftToRightSwipe(){
            Log.i(logTag, "LeftToRightSwipe!");
            if(currentIndex>0){
                changeBackground();
           }
        }

        public boolean onTouch(View v, MotionEvent event) {
            switch(event.getAction()){
                case MotionEvent.ACTION_DOWN: {
                    downX = event.getX();
                    return true;
                }
                case MotionEvent.ACTION_UP: {
                    upX = event.getX();

                    float deltaX = downX - upX;

                    // swipe horizontal?
                    if(Math.abs(deltaX) > MIN_DISTANCE){
                        // left or right
                        if(deltaX < 0) { this.onLeftToRightSwipe(); return true; }
                        if(deltaX > 0) { this.onRightToLeftSwipe(); return true; }
                    }
                    else {
                            Log.i(logTag, "Swipe was only " + Math.abs(deltaX) + " long, need at least " + MIN_DISTANCE);
                            return false; // We don't consume the event
                    }


                    return true;
                }
            }
            return false;
        }

        }

}

最佳答案

RelativeLayout layout1;

你声明了但没有初始化layout1,用id初始化一下试试。

关于android - 实现滑动时应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21108189/

相关文章:

android - Android Studio 项目 View 中的重复文件

android - ffmpeg在android上的播放

javascript - swipeJS 与 jquery 移动

android - 除非重新启动,否则滑动选项卡中的 ListView 不会更新

javascript - 暂时允许使用 TouchSwipe 插件垂直滚动

android - 布局内的 OpenGL View

java - 如何制作一个 "do not ask me again"的对话框弹出框?安卓

java - 同时显示两个不同 Activity 的两个倒计时器

swift - 如何使用向右滑动的手势执行 segue

java - viewpager 完成后调用 Activity