• ViewPager—01引导页的制作


    布局文件

    <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="${relativePackage}.${activityClass}" >
    
        <android.support.v4.view.ViewPager
            android:id="@+id/vp"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    
        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="20dp" >
    
            <LinearLayout
                android:id="@+id/ll_points"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal" >
            </LinearLayout>
    
            <View
                android:id="@+id/view_white"
                android:layout_width="10dp"
                android:layout_height="10dp"
                android:background="@drawable/white_point" />
        </RelativeLayout>
    
    </RelativeLayout>

    相关代码 

      1 public class MainActivity extends Activity {
      2 
      3     private ViewPager mViewPager;
      4     private int[] ids = {R.drawable.a1,R.drawable.a2,R.drawable.a3};
      5     private List<ImageView> mImageViews;
      6     private MyPagerAdapter mPagerAdapter;
      7     private LinearLayout mLlPoints;
      8     private View mViewPoint;
      9 
     10     private int dis_left; //白点距离左边的距离
     11     private int dis_pp; //两个点之间的距离
     12     
     13     @Override
     14     protected void onCreate(Bundle savedInstanceState) {
     15         super.onCreate(savedInstanceState);
     16         requestWindowFeature(Window.FEATURE_NO_TITLE);
     17         setContentView(R.layout.activity_main);
     18 
     19         initView();
     20         initData();
     21         
     22         mViewPoint.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
     23             
     24             @Override
     25             public void onGlobalLayout() {
     26                 mViewPoint.getViewTreeObserver().removeGlobalOnLayoutListener(this);
     27                 dis_pp = mLlPoints.getChildAt(1).getLeft() - mLlPoints.getChildAt(0).getLeft();
     28             }
     29         });
     30 
     31         mPagerAdapter = new MyPagerAdapter();
     32         mViewPager.setAdapter(mPagerAdapter);
     33         
     34         mViewPager.addOnPageChangeListener(new OnPageChangeListener() {
     35             @Override
     36             public void onPageSelected(int arg0) {
     37                 
     38             }
     39             
     40             @Override
     41             public void onPageScrolled(int arg0,float arg1,int arg2) {
     42                 //设置白点的移动距离
     43                 dis_left = (int)((arg0 + arg1) * dis_pp);
     44                 RelativeLayout.LayoutParams params = (LayoutParams)mViewPoint.getLayoutParams();
     45                 params.leftMargin = dis_left;
     46                 mViewPoint.setLayoutParams(params);
     47             }    
     48             
     49             @Override
     50             public void onPageScrollStateChanged(int arg0) {
     51                 
     52             }
     53         });
     54         
     55         
     56     }
     57 
     58     private void initView() {
     59         mViewPager = (ViewPager)findViewById(R.id.vp);
     60         mLlPoints = (LinearLayout)findViewById(R.id.ll_points);
     61         mViewPoint = findViewById(R.id.view_white);
     62     }
     63 
     64     private void initData() {
     65 
     66         mImageViews = new ArrayList<ImageView>();
     67 
     68         for (int i = 0;i < ids.length;i++) {
     69 
     70             ImageView iv = new ImageView(this);
     71             iv.setBackgroundResource(ids[i]);
     72             mImageViews.add(iv);
     73 
     74             View view = new View(this);
     75             view.setBackgroundResource(R.drawable.gray_point);
     76             LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(Utils.dip2px(this,10),
     77                                                 Utils.dip2px(this,10));
     78             if(i != 0){
     79                 params.leftMargin = Utils.dip2px(this,20);
     80             }
     81             view.setLayoutParams(params);
     82             
     83             mLlPoints.addView(view);
     84         }
     85     }
     86 
     87     class MyPagerAdapter extends PagerAdapter {
     88 
     89         @Override
     90         public int getCount() {
     91             return mImageViews.size();
     92         }
     93 
     94         @Override
     95         public Object instantiateItem(ViewGroup container,int position) {
     96             ImageView iv = mImageViews.get(position);
     97             container.addView(iv);
     98             return iv;
     99         }
    100 
    101         @Override
    102         public boolean isViewFromObject(View arg0,Object arg1) {
    103             return arg0 == arg1;
    104         }
    105 
    106         @Override
    107         public void destroyItem(ViewGroup container,int position,Object object) {
    108             container.removeView((View)object);
    109         }
    110 
    111     }
    112 }

     效果图

     

  • 相关阅读:
    Java 并发理论简述
    Java 并发之原子性与可见性
    JVM 简述
    【算法导论】第5章,概率分析和随机算法
    【算法导论】第3、4章,增长和递归式
    【python】matplotlib进阶
    【dlbook】实践方法论
    【dlbook】优化
    【dlbook】正则化
    【dlbook】深度网络
  • 原文地址:https://www.cnblogs.com/yangang2013/p/4912090.html
Copyright © 2020-2023  润新知