zoukankan      html  css  js  c++  java
  • 大二下学期项目练习(滑屏数据展示)

    今日主要从菜鸟驿站上学习了viewpager的滑屏效果,导航栏下会有一个光标,指示你现在的位置。

     xml部分:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity"
        android:orientation="vertical">
    
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="48dp"
            android:background="#FFFFFF">
    
            <TextView
                android:id="@+id/tv_one"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1.0"
                android:gravity="center"
                android:text="国内外时政"
                android:textColor="#000000" />
    
            <TextView
                android:id="@+id/tv_two"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1.0"
                android:gravity="center"
                android:text="马原部分"
                android:textColor="#000000" />
    
            <TextView
                android:id="@+id/tv_three"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1.0"
                android:gravity="center"
                android:text="毛概部分"
                android:textColor="#000000" />
        </LinearLayout>
    
        <ImageView
            android:id="@+id/img_cursor"
            android:layout_width="fill_parent"
            android:layout_height="10dp"
            android:scaleType="matrix"
            android:src="@mipmap/line" />
    
        <androidx.viewpager.widget.ViewPager
            android:id="@+id/vpager_four"
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_gravity="center"
            android:layout_weight="1.0"
            android:flipInterval="30"
            android:persistentDrawingCache="animation" />
    
    
    
    
    </LinearLayout>

    activity部分:

    public class MainActivity extends AppCompatActivity implements View.OnClickListener,
            ViewPager.OnPageChangeListener{
        private ViewPager vpager_four;
        private ImageView img_cursor;
        private TextView tv_one;
        private TextView tv_two;
        private TextView tv_three;
    
        private view_oneFragment oneFragment=new view_oneFragment();
        private view_twoFragment twoFragment=new view_twoFragment();
        private view_threeFragment threeFragment=new view_threeFragment();
        private PagerLIneAdapter mAdapter;
        private ArrayList<Fragment> listViews;
        private int offset = 0;//移动条图片的偏移量
        private int currIndex = 0;//当前页面的编号
        private int bmpWidth;// 移动条图片的长度
        private int one = 0; //移动条滑动一页的距离
        private int two = 0; //滑动条移动两页的距离
    
    
        private DataDao dataDao;
        private ListData listData;
        private List<ListData> list_list_Data=new ArrayList<>();
        private ListView query_list;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            initViews();
        }
        private void initViews() {
            vpager_four = (ViewPager) findViewById(R.id.vpager_four);
            tv_one = (TextView) findViewById(R.id.tv_one);
            tv_two = (TextView) findViewById(R.id.tv_two);
            tv_three = (TextView) findViewById(R.id.tv_three);
            img_cursor = (ImageView) findViewById(R.id.img_cursor);
    
            //下划线动画的相关设置:
            bmpWidth = BitmapFactory.decodeResource(getResources(), R.mipmap.line).getWidth();// 获取图片宽度
            DisplayMetrics dm = new DisplayMetrics();
            getWindowManager().getDefaultDisplay().getMetrics(dm);
            int screenW = dm.widthPixels;// 获取分辨率宽度
            offset = (screenW / 3 - bmpWidth) / 2;// 计算偏移量
            Matrix matrix = new Matrix();
            matrix.postTranslate(offset, 0);
            img_cursor.setImageMatrix(matrix);// 设置动画初始位置
            //移动的距离
            one = offset * 2 + bmpWidth;// 移动一页的偏移量,比如1->2,或者2->3
            two = one * 2;// 移动两页的偏移量,比如1直接跳3
    
    
            //往ViewPager填充View,同时设置点击事件与页面切换事件
            listViews = new ArrayList<Fragment>();
            LayoutInflater mInflater = getLayoutInflater();
            vpager_four = (ViewPager) findViewById(R.id.vpager_four);
            listViews = new ArrayList<Fragment>();
            listViews.add(oneFragment);
            listViews.add(twoFragment);
            listViews.add(threeFragment);
            mAdapter = new PagerLIneAdapter(getSupportFragmentManager(),listViews);
            vpager_four.setAdapter(mAdapter);
            vpager_four.setCurrentItem(0);          //设置ViewPager当前页,从0开始算
    
            tv_one.setOnClickListener(this);
            tv_two.setOnClickListener(this);
            tv_three.setOnClickListener(this);
    
            vpager_four.addOnPageChangeListener(this);
        }
    
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.tv_one:
                    vpager_four.setCurrentItem(0);
                    break;
                case R.id.tv_two:
                    vpager_four.setCurrentItem(1);
                    break;
                case R.id.tv_three:
                    vpager_four.setCurrentItem(2);
                    break;
            }
        }
    
        @Override
        public void onPageSelected(int index) {
            Animation animation = null;
            switch (index) {
                case 0:
                    if (currIndex == 1) {
                        animation = new TranslateAnimation(one, 0, 0, 0);
                    } else if (currIndex == 2) {
                        animation = new TranslateAnimation(two, 0, 0, 0);
                    }
                    break;
                case 1:
                    if (currIndex == 0) {
                        animation = new TranslateAnimation(offset, one, 0, 0);
                    } else if (currIndex == 2) {
                        animation = new TranslateAnimation(two, one, 0, 0);
                    }
                    break;
                case 2:
                    if (currIndex == 0) {
                        animation = new TranslateAnimation(offset, two, 0, 0);
                    } else if (currIndex == 1) {
                        animation = new TranslateAnimation(one, two, 0, 0);
                    }
                    break;
            }
            currIndex = index;
            animation.setFillAfter(true);// true表示图片停在动画结束位置
            animation.setDuration(300); //设置动画时间为300毫秒
            img_cursor.startAnimation(animation);//开始动画
        }
    
        @Override
        public void onPageScrollStateChanged(int i) {
    
        }
    
        @Override
        public void onPageScrolled(int i, float v, int i1) {
    
        }
    }
  • 相关阅读:
    3-4: 一元多项式的乘法与加法运算
    设计模式一装饰者模式
    设计模式一组合模式
    设计模式一命令模式
    设计模式一建造者模式
    设计模式一桥接模式
    设计模式一适配器模式
    设计模式一抽象工厂模式
    排序算法一二分排序
    排序算法一希尔排序
  • 原文地址:https://www.cnblogs.com/fengchuiguobanxia/p/14641157.html
Copyright © 2011-2022 走看看