解決ViewPager.OnPageChangeListener 和 OnClickListener 衝突的問題

如果這兩種監聽事件同時存在 

那麼直接讓paperView 設置這兩種監聽  是不會響應點擊事件的

那麼想通過點擊圖片返回原頁面 就成爲泡影

其實只要把OnClick事件  加載到 paperView 要加載的 view 組的view 上 就可以實現該功能

聽起來有但饒,那麼上代碼簡要代碼如下:

public class FriendsCricleImgDetailActivity extends BaseActivity {

    private ArrayList<View> listViews = null;
    private ViewPager pager;
    private ImgShowAdapter adapter;
    private int count;
    private RelativeLayout photo_relativeLayout;
    /**
     * 對應ID圖片數組
     */
    private List<FriendsCricleImageListObject> list = new ArrayList<>();
    /**
     * 選中的ID
     */
    private int selectNum = 0;
    /**
     * 選中的圖片索引
     */
    private TextView imgIndex;
    private TextView imgBack;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_friends_cricle_img_detail);
        init();

    }

    /**
     * 初始化
     */
    private void init() {
        photo_relativeLayout = (RelativeLayout) findViewById(R.id.photo_relativeLayout);
        imgIndex = (TextView) findViewById(R.id.imgIndex);
        imgBack = (TextView) findViewById(R.id.imgBack);
        imgBack.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
        pager = (ViewPager) findViewById(R.id.viewpager);
        photo_relativeLayout.setBackgroundColor(0x70000000);
        pager.setOnPageChangeListener(pageChangeListener);
        list = (List<FriendsCricleImageListObject>) getIntent().getSerializableExtra("imgList");
        selectNum = getIntent().getIntExtra("selectNum", 0);
        //初始化viewpaper中用到的view
        for (int i = 0; i < list.size(); i++) {
            initListViews(list.get(i).getImg());
        }
        adapter = new ImgShowAdapter(listViews);// 構造adapter
        pager.setAdapter(adapter);// 設置適配器
        pager.setCurrentItem(selectNum);//進入的時候 默認顯示點擊的那張圖
        imgIndex.setText((selectNum + 1) + "/" + list.size());
    }

    /**
     * 初始化圖片view 用於添加到viewPaper
     *
     * @param imgurl
     */
    private void initListViews(String imgurl) {
        if (listViews == null)
            listViews = new ArrayList<View>();
        ImageView img = new ImageView(this);// 構造textView對象
        img.setBackgroundColor(0xff000000);
        img.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT));
        ImageLoader.getInstance().displayImage(imgurl, img, BaseApp.getFriendsCricleDisplayImageOptions());
        img.setOnClickListener(listener);
        listViews.add(img);// 添加view
    }

    /**
     * 點擊事件必須加載圖片上 方可奏效
     */
    View.OnClickListener listener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            finish();
        }
    };
    /**
     * 滑動事件監聽
     */
    private ViewPager.OnPageChangeListener pageChangeListener = new ViewPager.OnPageChangeListener() {

        public void onPageSelected(int arg0) {// 頁面選擇響應函數
            count = arg0;
            imgIndex.setText((count + 1) + "/" + list.size());//動態是是  當前是第幾張圖片
        }

        public void onPageScrolled(int arg0, float arg1, int arg2) {// 滑動中。。。
        }

        public void onPageScrollStateChanged(int arg0) {// 滑動狀態改變
            int x = arg0;
        }

    };


}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章