获取滑动视图

时间:2015-05-11 16:31:44

标签: android android-layout

嗨我试图在Android http://www.puffgames.com/bubblewrap/上重新创建这个游戏,我成功地膨胀了一个gridview,并且能够在点击时更改单个项目的背景,但我试图重新创建"疯狂模式&# 34;换句话说,当我轻扫时获取所有视图,这可能吗?如果是这样的话?请帮忙

mGridView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if(event.getAction() == MotionEvent.ACTION_MOVE){
                return true;
            }
            return false;
        }
    });

2 个答案:

答案 0 :(得分:0)

在那里你应该可以做这样的事情

mGridView.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if(event.getAction() == MotionEvent.ACTION_MOVE){
            int position = mGridView.pointToPosition(event.getX(),event.getY());
            if(position!=-1){
                //what ever you need to do to pop the bubble
                adapter.popBubble(position);
            }
            return true;
        }
        return false;
    }
});

答案 1 :(得分:0)

我在问题中找到的解决方案如下:

final GridView layout = (GridView)parentView;

    parentView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            for(int i =0; i< layout.getChildCount(); i++){
                View view = layout.getChildAt(i);
                Rect outRect = new Rect(view.getLeft(), view.getTop(), view.getRight(), view.getBottom());
                if(outRect.contains((int)event.getX(), (int)event.getY())){
                    mBubble = (ImageView) view.findViewById(R.id.img_bubble);
                    if(mSavedStates.get(i)){
                        mSavedStates.remove(i);
                        mSavedStates.put(i,false);
                        mBubble.setBackgroundResource(R.drawable.ic_emptybubble);
                        playRandomSound();

                        ThreadType2 task = new ThreadType2(new RunnableType2() {
                            @Override
                            public void run(View view, int position) {
                                mSupporBubble = (ImageView) view.findViewById(R.id.img_bubble);
                                mSavedStates.remove(position);
                                mSavedStates.put(position, true);

                                MainActivity.this.runOnUiThread(new Runnable() {
                                    @Override
                                    public void run() {
                                        mSupporBubble.setBackgroundResource(R.drawable.ic_fullbubble);
                                    }
                                });
                            }
                        });
                        task.start(view, i);

                    }

                }
            }

            return true;
        }
    });