[android]關於輪播小圓點切換消失

主要原因是因爲onDestroy的時候數組和handler沒有情況

@Override
public void onDestroy() {
    super.onDestroy();
    handler.removeCallbacksAndMessages(null);
    dicatorList.clear();
    f_main_laydor.removeAllViews();
}

附上小圓點生成圖

private List<ImageView> dicatorList=new ArrayList<>();
private void initDor(LinearLayout lay){
    lay.removeAllViews();
    for (int i=0;i<imgs.length;i++){
        ImageView img=getIndicatorImageView();
        TextView txt = new TextView(getActivity());
        //這裏的dimen是一個xml文件裏面放了多少DP,沒有的話自己創建一個就行了
        ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(getResources().getDimensionPixelSize(R.dimen.dot_size),     getResources().getDimensionPixelSize(R.dimen.dot_size));
        txt.setLayoutParams(lp);
        dicatorList.add(img);
        lay.addView(img);
        lay.addView(txt);
    }
}
private void setIndicator(int currentPosition) {
    for (int i = 0; i < imgs.length; i++) {
        dicatorList.get(i).setImageResource(R.mipmap.dor_namal);
    }
    dicatorList.get(currentPosition).setImageResource(R.mipmap.dor_click);
}
private ImageView getIndicatorImageView() {
    ImageView imageView = new ImageView(getActivity());
    ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(getResources().getDimensionPixelSize(R.dimen.dot_size), getResources().getDimensionPixelSize(R.dimen.dot_size));
    imageView.setLayoutParams(lp);
    return imageView;
}

調用

initDor(f_main_laydor);
setIndicator(0);
vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

    }

    @Override
    public void onPageSelected(int position) {
        setIndicator(position);
    }

    @Override
    public void onPageScrollStateChanged(int state) {

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