android viewpager

来源:互联网 发布:邮箱大师 mac 编辑:程序博客网 时间:2024/05/16 13:47
package com.mcampus.microbar.activity;import com.mcampus.mcampus.R;import com.mcampus.mcampus.R.layout;import com.mcampus.mcampus.R.menu;import java.util.ArrayList;  import java.util.List;  import android.app.Activity;  import android.graphics.BitmapFactory;  import android.graphics.Matrix;  import android.os.Bundle;  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.View;  import android.view.View.OnClickListener;  import android.view.animation.Animation;  import android.view.animation.TranslateAnimation;  import android.view.ViewGroup;  import android.widget.ImageView;  import android.widget.TextView;  import android.widget.Toast;    public class MicrobarActivity extends Activity {        private ViewPager viewPager;//页卡内容      private ImageView imageView;// 动画图片      private TextView textView1,textView2,textView3,textView4;      private List<View> views;// Tab页面列表      private int offset = 0;// 动画图片偏移量      private int currIndex = 0;// 当前页卡编号      private int bmpW;// 动画图片宽度      private View message,gobar,seek,find;//各个页卡      @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.activity_microbar);          InitImageView();          InitTextView();          InitViewPager();      }        private void InitViewPager() {          viewPager=(ViewPager) findViewById(R.id.vPager);          views=new ArrayList<View>();          LayoutInflater inflater=getLayoutInflater();          message=inflater.inflate(R.layout.microbar_message, null);          gobar=inflater.inflate(R.layout.microbar_gobar, null);          seek=inflater.inflate(R.layout.microbar_seek, null);        find=inflater.inflate(R.layout.microbar_find, null);        views.add(message);          views.add(gobar);          views.add(seek);        views.add(find);        viewPager.setAdapter(new MyViewPagerAdapter(views));          viewPager.setCurrentItem(0);          viewPager.setOnPageChangeListener(new MyOnPageChangeListener());      }       /**       *  初始化头标       */        private void InitTextView() {          textView1 = (TextView) findViewById(R.id.text1);          textView2 = (TextView) findViewById(R.id.text2);          textView3 = (TextView) findViewById(R.id.text3);          textView4 = (TextView) findViewById(R.id.text4);        textView1.setOnClickListener(new MyOnClickListener(0));          textView2.setOnClickListener(new MyOnClickListener(1));          textView3.setOnClickListener(new MyOnClickListener(2));          textView4.setOnClickListener(new MyOnClickListener(3));     }        /**      2      * 初始化动画,这个就是页卡滑动时,下面的横线也滑动的效果,在这里需要计算一些数据      3 */        private void InitImageView() {          imageView= (ImageView) findViewById(R.id.cursor);          bmpW = BitmapFactory.decodeResource(getResources(), R.drawable.a).getWidth();// 获取图片宽度          DisplayMetrics dm = new DisplayMetrics();          getWindowManager().getDefaultDisplay().getMetrics(dm);          int screenW = dm.widthPixels;// 获取分辨率宽度          offset = (screenW / 4 - bmpW) / 3;// 计算偏移量          Matrix matrix = new Matrix();          matrix.postTranslate(offset, 0);          imageView.setImageMatrix(matrix);// 设置动画初始位置      }      /**       *           * 头标点击监听 3 */      private class MyOnClickListener implements OnClickListener{          private int index=0;          public MyOnClickListener(int i){              index=i;          }          public void onClick(View v) {              viewPager.setCurrentItem(index);                      }                }            public class MyViewPagerAdapter extends PagerAdapter{          private List<View> mListViews;                    public MyViewPagerAdapter(List<View> mListViews) {              this.mListViews = mListViews;          }            @Override          public void destroyItem(ViewGroup container, int position, Object object)   {                 container.removeView(mListViews.get(position));          }              @Override          public Object instantiateItem(ViewGroup container, int position) {                         container.addView(mListViews.get(position), 0);               return mListViews.get(position);          }            @Override          public int getCount() {                       return  mListViews.size();          }                    @Override          public boolean isViewFromObject(View arg0, Object arg1) {                         return arg0==arg1;          }      }        public class MyOnPageChangeListener implements OnPageChangeListener{            int one = offset * 2 + bmpW;// 页卡1 -> 页卡2 偏移量          int two = one * 2;// 页卡1 -> 页卡3 偏移量          public void onPageScrollStateChanged(int arg0) {                                      }            public void onPageScrolled(int arg0, float arg1, int arg2) {                                      }            public void onPageSelected(int arg0) {              /*两种方法,这个是一种,下面还有一种,显然这个比较麻烦             Animation animation = null;             switch (arg0) {             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;                              }             */              Animation animation = new TranslateAnimation(one*currIndex, one*arg0, 0, 0);//显然这个比较简洁,只有一行代码。              currIndex = arg0;              animation.setFillAfter(true);// True:图片停在动画结束位置              animation.setDuration(300);              imageView.startAnimation(animation);              Toast.makeText(MicrobarActivity.this, "您选择了"+ viewPager.getCurrentItem()+"页卡", Toast.LENGTH_SHORT).show();          }                }  }  //这是Activity的代码
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/main"    android:layout_width="fill_parent"    android:layout_height="fill_parent" >    <RelativeLayout        android:id="@+id/top"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:background="@drawable/skinpic_blue_j" >        <TextView            android:id="@+id/title"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_centerInParent="true"            android:clickable="true"            android:gravity="center"            android:onClick="popwin_main_btn"            android:text="@string/microbar"            android:textColor="@color/white"            android:textSize="20sp"            android:textStyle="bold" />        <ImageView            android:id="@+id/imageView2"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_alignParentRight="true"            android:layout_centerVertical="true"            android:clickable="true"            android:onClick="refresh"            android:src="@drawable/refresh_btn" />        <ImageView            android:id="@+id/imageView1"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_alignParentLeft="true"            android:layout_centerVertical="true"            android:layout_marginLeft="14dp"            android:clickable="true"            android:onClick="home"            android:src="@drawable/home" />    </RelativeLayout>    <RelativeLayout        android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:layout_below="@id/top" >        <RelativeLayout            android:layout_width="fill_parent"            android:layout_height="fill_parent" >            <LinearLayout                android:id="@+id/linearLayout1"                android:layout_width="fill_parent"                android:layout_height="40.0dip"                android:background="#FFFFFF" >                <TextView                    android:id="@+id/text1"                    android:layout_width="fill_parent"                    android:layout_height="fill_parent"                    android:layout_weight="1.0"                    android:gravity="center"                    android:text="@string/message"                    android:textColor="#000000"                    android:textSize="20.0dip" />                <TextView                    android:id="@+id/text2"                    android:layout_width="fill_parent"                    android:layout_height="fill_parent"                    android:layout_weight="1.0"                    android:gravity="center"                    android:text="@string/gobar"                    android:textColor="#000000"                    android:textSize="20.0dip" />                <TextView                    android:id="@+id/text3"                    android:layout_width="fill_parent"                    android:layout_height="fill_parent"                    android:layout_weight="1.0"                    android:gravity="center"                    android:text="@string/seek"                    android:textColor="#000000"                    android:textSize="20.0dip" />                <TextView                    android:id="@+id/text4"                    android:layout_width="fill_parent"                    android:layout_height="fill_parent"                    android:layout_weight="1.0"                    android:gravity="center"                    android:text="@string/find"                    android:textColor="#000000"                    android:textSize="20.0dip" />            </LinearLayout>            <ImageView                android:layout_below="@id/linearLayout1"                android:id="@+id/cursor"                android:layout_width="fill_parent"                android:layout_height="wrap_content"                android:scaleType="matrix"                android:src="@drawable/a" />            <android.support.v4.view.ViewPager                android:id="@+id/vPager"                android:layout_below="@id/cursor"                android:layout_width="fill_parent"                android:layout_height="fill_parent"                android:layout_gravity="center"                android:layout_weight="1.0"                android:background="#000000"                android:flipInterval="30"                android:persistentDrawingCache="animation" />        </RelativeLayout>    </RelativeLayout></RelativeLayout>
//xml文件的代码

                                             
0 0