国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android之ViewPager的使用

2019-11-08 00:21:00
字體:
來源:轉載
供稿:網友

MainActivity:

public class MainActivity extends AppCompatActivity {    PRivate static final String TAG = MainActivity.class.getSimpleName();    private ViewPager viewpager;    private TextView tv_title;    private LinearLayout ll_point_group;    //ListView的使用    //1.在布局文件中定義ListView    //2.在代碼中實例化ListView    //3.準備數據    //4.設置適配器-item布局-綁定數據    private ArrayList<ImageView> imageViews;    // 圖片資源ID    private final int[] imageIds = {            R.drawable.a,            R.drawable.b,            R.drawable.c,            R.drawable.d,            R.drawable.e };    /**     * 上一次高亮顯示的位置     */    private int prePosition = 0;    /**     * 是否已經滾動     */    private boolean isDragging = false;    // 圖片標題集合    private final String[] imageDescriptions = {            "尚硅谷波河爭霸賽!",            "凝聚你我,放飛夢想!",            "抱歉沒座位了!",            "7月就業名單全部曝光!",            "平均起薪11345元"    };    private Handler handler = new Handler(){        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            int item = viewpager.getCurrentItem()+1;            viewpager.setCurrentItem(item);            //延遲發消息            handler.sendEmptyMessageDelayed(0,4000);        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        viewpager = (ViewPager) findViewById(R.id.viewpager);        tv_title = (TextView) findViewById(R.id.tv_title);        ll_point_group = (LinearLayout) findViewById(R.id.ll_point_group);        //ViewPager的使用        //1.在布局文件中定義ViewPager        //2.在代碼中實例化ViewPager        //3.準備數據        imageViews = new ArrayList<>();        for (int i = 0 ;i < imageIds.length;i++){            ImageView imageView = new ImageView(this);            imageView.setBackgroundResource(imageIds[i]);            //添加到集合中            imageViews.add(imageView);            //添加點            ImageView point = new ImageView(this);            point.setBackgroundResource(R.drawable.point_selector);            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(8,8);            if(i==0){                point.setEnabled(true); //顯示紅色            }else{                point.setEnabled(false);//顯示灰色                params.leftMargin = 8;            }            point.setLayoutParams(params);            ll_point_group.addView(point);        }        //4.設置適配器(PagerAdapter)-item布局-綁定數據        viewpager.setAdapter(new MyPagerAdapter());        //設置監聽ViewPager頁面的改變        viewpager.addOnPageChangeListener(new MyOnPageChangeListener());        //設置中間位置        int item = Integer.MAX_VALUE/2 - Integer.MAX_VALUE/2%imageViews.size();//要保證imageViews的整數倍        viewpager.setCurrentItem(item);        tv_title.setText(imageDescriptions[prePosition]);        //發消息        handler.sendEmptyMessageDelayed(0,3000);    }    class MyOnPageChangeListener implements ViewPager.OnPageChangeListener {        /**         * 當頁面滾動了的時候回調這個方法         * @param position 當前頁面的位置         * @param positionOffset 滑動頁面的百分比         * @param positionOffsetPixels 在屏幕上滑動的像數         */        @Override        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {        }        /**         * 當某個頁面被選中了的時候回調         * @param position 被選中頁面的位置         */        @Override        public void onPageSelected(int position) {            int realPosition = position%imageViews.size();            //設置對應頁面的文本信息            tv_title.setText(imageDescriptions[realPosition]);            //把上一個高亮的設置默認-灰色            ll_point_group.getChildAt(prePosition).setEnabled(false);            //當前的設置為高亮-紅色            ll_point_group.getChildAt(realPosition).setEnabled(true);            prePosition = realPosition;        }        /**         當頁面滾動狀態變化的時候回調這個方法         靜止->滑動         滑動-->靜止         靜止-->拖拽         */        @Override        public void onPageScrollStateChanged(int state) {            if(state == ViewPager.SCROLL_STATE_DRAGGING){                isDragging = true;                handler.removeCallbacksAndMessages(null);                Log.e(TAG,"SCROLL_STATE_DRAGGING-------------------");            }else if(state == ViewPager.SCROLL_STATE_SETTLING){                Log.e(TAG,"SCROLL_STATE_SETTLING-----------------");            }else if(state == ViewPager.SCROLL_STATE_IDLE&&isDragging){                isDragging = false;                Log.e(TAG,"SCROLL_STATE_IDLE------------");                handler.removeCallbacksAndMessages(null);                handler.sendEmptyMessageDelayed(0,4000);            }        }    }    class MyPagerAdapter extends PagerAdapter{        /**         * 得到圖片的總數         * @return         */        @Override        public int getCount() {//            return imageViews.size();            return Integer.MAX_VALUE;        }        /**         * 相當于getView方法         * @param container ViewPager自身         * @param position 當前實例化頁面的位置         * @return         */        @Override        public Object instantiateItem(ViewGroup container, final int position) {            int realPosition = position%imageViews.size();            final ImageView imageView =  imageViews.get(realPosition);            container.addView(imageView);//添加到ViewPager中//            Log.e(TAG, "instantiateItem==" + position + ",---imageView==" + imageView);            imageView.setOnTouchListener(new View.OnTouchListener() {                @Override                public boolean onTouch(View v, MotionEvent event) {                    switch (event.getAction()){                        case MotionEvent.ACTION_DOWN://手指按下                            Log.e(TAG,"onTouch==手指按下");                            handler.removeCallbacksAndMessages(null);                            break;                        case MotionEvent.ACTION_MOVE://手指在這個控件上移動                            break;                        case MotionEvent.ACTION_CANCEL://手指在這個控件上移動                            Log.e(TAG,"onTouch==事件取消");//                            handler.removeCallbacksAndMessages(null);//                            handler.sendEmptyMessageDelayed(0,4000);                            break;                        case MotionEvent.ACTION_UP://手指離開                            Log.e(TAG,"onTouch==手指離開");                            handler.removeCallbacksAndMessages(null);                            handler.sendEmptyMessageDelayed(0,4000);                            break;                    }                    return false;                }            });            imageView.setTag(position);            imageView.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {                    Log.e(TAG,"點擊事件");                    int position = (int) v.getTag()%imageViews.size();                    String text = imageDescriptions[position];                    Toast.makeText(MainActivity.this, "text=="+text, Toast.LENGTH_SHORT).show();                }            });            return imageView;        }        /**         * 比較view和object是否同一個實例         * @param view 頁面         * @param object  這個方法instantiateItem返回的結果         * @return         */        @Override        public boolean isViewFromObject(View view, Object object) {//            if(view == object){//                return true;//            }else{//                return  false;//            }            return view == object;        }        /**         * 釋放資源         * @param container viewpager         * @param position 要釋放的位置         * @param object 要釋放的頁面         */        @Override        public void destroyItem(ViewGroup container, int position, Object object) {//            super.destroyItem(container, position, object);//            Log.e(TAG, "destroyItem==" + position + ",---object==" + object);            container.removeView((View) object);        }    }}drawable文件:

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:state_enabled="false" android:drawable="@drawable/point_normal"/>    <item android:state_enabled="true" android:drawable="@drawable/point_press"/></selector>
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"    android:shape="oval">    <size        android:width="8dp"        android:height="8dp" />    <solid android:color="#44000000"/></shape>

<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"    android:shape="oval">    <size        android:width="8dp"        android:height="8dp" />    <solid android:color="#ff0000"/></shape>activity_main:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.atguigu.viewpager.MainActivity">    <android.support.v4.view.ViewPager        android:id="@+id/viewpager"        android:layout_width="match_parent"        android:layout_height="180dp" />    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_alignBottom="@id/viewpager"        android:background="#44000000"        android:orientation="vertical"        android:padding="5dp">        <TextView            android:id="@+id/tv_title"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:gravity="center_horizontal"            android:padding="3dp"            android:text="美國隊長3"            android:textColor="#ffffff" />        <LinearLayout            android:id="@+id/ll_point_group"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_gravity="center_horizontal"            android:orientation="horizontal" />    </LinearLayout></RelativeLayout>


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 会同县| 仁寿县| 太和县| 丹凤县| 高雄市| 安乡县| 永康市| 上林县| 彭州市| 凌海市| 南川市| 佛山市| 桃园县| 寿宁县| 慈利县| 龙川县| 宁海县| 虹口区| 仙居县| 泰安市| 马公市| 左权县| 长兴县| 云安县| 龙口市| 那坡县| 鹤岗市| 芮城县| 武定县| 贞丰县| 黄平县| 平邑县| 武宁县| 文化| 资溪县| 云浮市| 南陵县| 小金县| 榆林市| 信宜市| 光泽县|