首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android将触摸事件从一个画廊传递到另一个画廊

Android将触摸事件从一个画廊传递到另一个画廊
EN

Stack Overflow用户
提问于 2012-10-30 05:46:15
回答 1查看 683关注 0票数 1

我有两个不同大小的画廊在彼此的相对布局上。后面的画廊比上面的画廊小,所以我希望画廊后面从触摸事件反应,如果两个画廊的共同部分被触摸,否则上面的画廊应该会有反应。目前只有上面的画廊有反应。你知道如何实现这一点吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-30 05:59:38

我没有试过,但这可能会对你有帮助:

覆盖gallary1中的onTouchEvent,然后复制MotionEvent并将其传递给其他库,让我们将其命名为gallary1

代码语言:javascript
复制
@Override
    public boolean onTouchEvent(MotionEvent event) {

        MotionEvent event2=MotionEvent.obtain(event);
        gallery2.onTouchEvent(event2);

        return super.onTouchEvent(event);
    }

完整代码(正常工作):

代码语言:javascript
复制
public class MyGallary extends Gallery {

    public MyGallary(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
   }

public MyGallary(Context context, AttributeSet attrs) {
    super(context, attrs);
   }

public MyGallary(Context context) {
    super(context);
  }

    private MyTouchListener myTouchListener;

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (myTouchListener != null) {
            myTouchListener.onTouch(event);
        }
        return super.onTouchEvent(event);
    }

    public MyTouchListener getMyTouchListener() {
        return myTouchListener;
    }

    public void setMyTouchListener(MyTouchListener myTouchListener) {
        this.myTouchListener = myTouchListener;
    }

}

代码语言:javascript
复制
public interface MyTouchListener {

    public void onTouch(MotionEvent event);

}

代码语言:javascript
复制
public class MainActivity extends Activity {

    MyGallary gallary1;
    Gallery gallary2;
    MyTouchListener listener1;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        gallary1 = (MyGallary) findViewById(R.id.myGallary1);
        listener1 = new MyTouchListener() {

            @Override
            public void onTouch(MotionEvent event) {
                MotionEvent event2 = MotionEvent.obtain(event);
                gallary2.onTouchEvent(event2);

            }
        };
        gallary1.setMyTouchListener(listener1);

        gallary2 = (Gallary) findViewById(R.id.Gallary2);

        int[] array = new int[] { R.drawable.ic_launcher,
                R.drawable.ic_launcher, R.drawable.ic_launcher,
                R.drawable.ic_launcher, R.drawable.ic_launcher,
                R.drawable.ic_launcher, R.drawable.ic_launcher };

        ImageAdapter adapter1 = new ImageAdapter(array);
        gallary1.setAdapter(adapter1);

        ImageAdapter adapter2=new ImageAdapter(array);
        gallary2.setAdapter(adapter2);

    }

    class ImageAdapter extends BaseAdapter {

        int[] array;

        public ImageAdapter(int[] array) {
            this.array = array;
        }

        @Override
        public int getCount() {
            return array.length;
        }

        @Override
        public Object getItem(int position) {

            return array[position];
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

            if (convertView == null) {
                ImageView imageView = new ImageView(MainActivity.this);
                Gallery.LayoutParams params = new Gallery.LayoutParams(
                        Gallery.LayoutParams.MATCH_PARENT,
                        Gallery.LayoutParams.MATCH_PARENT);

                imageView.setLayoutParams(params);

                convertView = imageView;

            }

            ImageView imageView = (ImageView) convertView;
            imageView.setImageResource((Integer) getItem(position));

            return convertView;
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13130138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档