• viewpager例子:


    viewpager例子:

    package com.example.dwintertabdemo;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import android.app.Activity;
    import android.graphics.BitmapFactory;
    import android.graphics.Color;
    import android.graphics.Matrix;
    import android.os.Bundle;
    import android.os.Parcelable;
    import android.support.v4.view.PagerAdapter;
    import android.support.v4.view.ViewPager;
    import android.support.v4.view.ViewPager.OnPageChangeListener;
    import android.util.DisplayMetrics;
    import android.view.LayoutInflater;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.animation.Animation;
    import android.view.animation.TranslateAnimation;
    import android.widget.ImageView;
    import android.widget.TextView;
    
    public class MainActivity extends Activity {
    
        private ViewPager mPager;// 页卡内容
        private List<View> listViews; // Tab页面列表
        private ImageView cursor;// 动画图片
        private TextView t1, t2, t3;// 页卡头标
        private int offset = 0;// 动画图片偏移量
        private int currIndex = 0;// 当前页卡编号
        private int bmpW;// 动画图片宽度
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        
            InitTextView();
            InitImageView();
            InitViewPager();
        }
    
        private void InitViewPager() {
            mPager = (ViewPager) findViewById(R.id.vPager);
            listViews = new ArrayList<View>();
            LayoutInflater mInflater = getLayoutInflater();
            listViews.add(mInflater.inflate(R.layout.lay1, null));
            listViews.add(mInflater.inflate(R.layout.lay2, null));
            listViews.add(mInflater.inflate(R.layout.lay3, null));
            MyPagerAdapter pagerAdapter = new MyPagerAdapter(listViews);
            mPager.setAdapter(pagerAdapter);
            mPager.setCurrentItem(0);
    
            MyOnPageChangeListener listener = new MyOnPageChangeListener();
            mPager.setOnPageChangeListener(listener);
            listener.onPageSelected(0);
        }
    
        private void InitTextView() {
            t1 = (TextView) findViewById(R.id.text1);
            t2 = (TextView) findViewById(R.id.text2);
            t3 = (TextView) findViewById(R.id.text3);
    
            t1.setOnClickListener(new MyOnClickListener(0));
            t2.setOnClickListener(new MyOnClickListener(1));
            t3.setOnClickListener(new MyOnClickListener(2));
        }
    
        private void InitImageView() {
            cursor = (ImageView) findViewById(R.id.cursor);
            bmpW = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher)
                    .getWidth();// 获取图片宽度
            DisplayMetrics dm = new DisplayMetrics();
            getWindowManager().getDefaultDisplay().getMetrics(dm);
            int screenW = dm.widthPixels;// 获取分辨率宽度
            offset = (screenW / 3 - bmpW) / 2;// 计算偏移量
            Matrix matrix = new Matrix();
            matrix.postTranslate(offset, 0);
            cursor.setImageMatrix(matrix);// 设置动画初始位置
        }
        public class MyOnClickListener implements View.OnClickListener {
            private int index = 0;
    
            public MyOnClickListener(int i) {
                index = i;
            }
    
            @Override
            public void onClick(View v) {
                mPager.setCurrentItem(index);
            }
        };
    
        public class MyPagerAdapter extends PagerAdapter {
            public List<View> mListViews;
    
            public MyPagerAdapter(List<View> mListViews) {
                this.mListViews = mListViews;
            }
    
            @Override
            public void destroyItem(View arg0, int arg1, Object arg2) {
                ((ViewPager) arg0).removeView(mListViews.get(arg1));
            }
    
            @Override
            public void finishUpdate(View arg0) {
            }
    
            @Override
            public int getCount() {
                return mListViews.size();
            }
    
            @Override
            public Object instantiateItem(View arg0, int arg1) {
                ((ViewPager) arg0).addView(mListViews.get(arg1), 0);
                return mListViews.get(arg1);
            }
    
            @Override
            public boolean isViewFromObject(View arg0, Object arg1) {
                return arg0 == (arg1);
            }
    
            @Override
            public void restoreState(Parcelable arg0, ClassLoader arg1) {
            }
    
            @Override
            public Parcelable saveState() {
                return null;
            }
    
            @Override
            public void startUpdate(View arg0) {
            }
        }
    
    
        public class MyOnPageChangeListener implements OnPageChangeListener {
    
            int one = offset * 2 + bmpW;// 页卡1 -> 页卡2 偏移量
            int two = one * 2;// 页卡1 -> 页卡3 偏移量
    
            @Override
            public void onPageSelected(int arg0) {
                Animation animation = null;
                switch (arg0) {
                case 0:
                    t1.setTextColor(Color.BLUE);
                    t2.setTextColor(Color.BLACK);
                    t3.setTextColor(Color.BLACK);
                    if (currIndex == 1) {
                        animation = new TranslateAnimation(one, 0, 0, 0);
                    } else if (currIndex == 2) {
                        animation = new TranslateAnimation(two, 0, 0, 0);
                    } else if (currIndex == 0) {
                        animation = new TranslateAnimation(0, 0, 0, 0);
                    }
                    break;
                case 1:
                    t2.setTextColor(Color.BLUE);
                    t1.setTextColor(Color.BLACK);
                    t3.setTextColor(Color.BLACK);
                    if (currIndex == 0) {
                        animation = new TranslateAnimation(offset, one, 0, 0);
                    } else if (currIndex == 2) {
                        animation = new TranslateAnimation(two, one, 0, 0);
                    }
                    break;
                case 2:
                    t3.setTextColor(Color.BLUE);
                    t2.setTextColor(Color.BLACK);
                    t1.setTextColor(Color.BLACK);
                    if (currIndex == 0) {
                        animation = new TranslateAnimation(offset, two, 0, 0);
                    } else if (currIndex == 1) {
                        animation = new TranslateAnimation(one, two, 0, 0);
                    }
                    break;
                }
                currIndex = arg0;
                animation.setFillAfter(true);// True:图片停在动画结束位置
                animation.setDuration(300);
                cursor.startAnimation(animation);
            }
    
            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
            }
    
            @Override
            public void onPageScrollStateChanged(int arg0) {
            }
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            // Handle action bar item clicks here. The action bar will
            // automatically handle clicks on the Home/Up button, so long
            // as you specify a parent activity in AndroidManifest.xml.
            int id = item.getItemId();
            if (id == R.id.action_settings) {
                return true;
            }
            return super.onOptionsItemSelected(item);
        }
    }
  • 相关阅读:
    redis的基本操作
    python对txt的读写
    python random的练习
    python继承的练习
    python类和实例
    VS2019 自动代码补全功能
    GIT 删除操作
    vue-router 注意事项
    Vue中axios访问 后端跨域问题
    Vue2.0 搭配 axios
  • 原文地址:https://www.cnblogs.com/wjhblogs/p/4838997.html
Copyright © 2020-2023  润新知