android: viewpager+将activity转化成view

来源:互联网 发布:淘宝主营率是什么意思 编辑:程序博客网 时间:2024/05/29 19:34

笔者之前已经做过了一个使用viewpgaer轮播效果的博客,但是viewpager本身也是深受androider的喜爱,如今基本每个app都会用到相关的功能,本篇文章也是讲一下用viewpager做主界面的用法。(笔者对viewpager的学习也是比较曲折,网上各种找不到符合自己功能的代码)


笔者之后又学习了viewpager+fragment的使用,地址为:http://blog.csdn.net/double2hao/article/details/50450377


主要功能:(源码在文章最后)

1、滑动的同时改变标题栏

2、点击标题栏的同时滑动


效果:

     


主要文件:

      


MainActivity:

[java] view plain copy
  1. import android.app.Activity;  
  2. import android.app.LocalActivityManager;  
  3. import android.content.Intent;  
  4. import android.os.Bundle;  
  5. import android.support.v4.view.ViewPager;  
  6. import android.support.v4.view.ViewPager.OnPageChangeListener;  
  7. import android.view.View;  
  8. import android.view.View.OnClickListener;  
  9. import android.widget.ImageView;  
  10.   
  11. import java.util.ArrayList;  
  12. import java.util.List;  
  13.   
  14. public class MainActivity extends Activity {  
  15.   
  16.     //控件  
  17.     private ImageView img1, img2, img3, img4;  
  18.     private ViewPager vp;  
  19.   
  20.     //LocalActivityManager用来获取每个activity的view,放于Adapter中  
  21.     //MyViewPageAdapter用来放viewpager的内容  
  22.     //OnClickListener设置底部图片的点击事件  
  23.     //OnPageChangeListener设置图片的滑动事件  
  24.     private LocalActivityManager manager;  
  25.     private MyViewPageAdapter viewPageAdapter;  
  26.     private OnClickListener clickListener;  
  27.     private OnPageChangeListener pageChangeListener;  
  28.   
  29.     @Override  
  30.     protected void onCreate(Bundle savedInstanceState) {  
  31.         super.onCreate(savedInstanceState);  
  32.         setContentView(R.layout.activity_main);  
  33.   
  34.         manager = new LocalActivityManager(thistrue);  
  35.         manager.dispatchCreate(savedInstanceState);  
  36.   
  37.         vp = (ViewPager) findViewById(R.id.viewpager);  
  38.         InitView();  
  39.     }  
  40.   
  41.   
  42.     private void InitView() {  
  43.         // TODO Auto-generated method stub  
  44.         img1 = (ImageView) findViewById(R.id.main_img1);  
  45.         img2 = (ImageView) findViewById(R.id.main_img2);  
  46.         img3 = (ImageView) findViewById(R.id.main_img3);  
  47.         img4 = (ImageView) findViewById(R.id.main_img4);  
  48.         clickListener = new OnClickListener() {  
  49.   
  50.             @Override  
  51.             public void onClick(View v) {  
  52.                 // TODO Auto-generated method stub  
  53.   
  54.                 switch (v.getId()) {  
  55.                     case R.id.main_img1:  
  56.                         vp.setCurrentItem(0);  
  57.                         break;  
  58.                     case R.id.main_img2:  
  59.                         vp.setCurrentItem(1);  
  60.                         break;  
  61.                     case R.id.main_img3:  
  62.                         vp.setCurrentItem(2);  
  63.                         break;  
  64.                     case R.id.main_img4:  
  65.                         vp.setCurrentItem(3);  
  66.                         break;  
  67.                 }  
  68.             }  
  69.         };  
  70.   
  71.         img1.setOnClickListener(clickListener);  
  72.         img2.setOnClickListener(clickListener);  
  73.         img3.setOnClickListener(clickListener);  
  74.         img4.setOnClickListener(clickListener);  
  75.         InitPager();  
  76.   
  77.     }  
  78.   
  79.     private void InitPager() {  
  80.         // TODO Auto-generated method stub  
  81.         pageChangeListener = new OnPageChangeListener() {  
  82.             @Override  
  83.             public void onPageSelected(int arg0) {  
  84.                 // TODO Auto-generated method stub  
  85.                 switch (arg0) {  
  86.                     case 0:  
  87.                         img1.setImageResource(R.drawable.main_icon1_1);  
  88.                         img2.setImageResource(R.drawable.main_icon2_2);  
  89.                         img3.setImageResource(R.drawable.main_icon3_2);  
  90.                         img4.setImageResource(R.drawable.main_icon4_2);  
  91.                         break;  
  92.                     case 1:  
  93.                         img1.setImageResource(R.drawable.main_icon1_2);  
  94.                         img2.setImageResource(R.drawable.main_icon2_1);  
  95.                         img3.setImageResource(R.drawable.main_icon3_2);  
  96.                         img4.setImageResource(R.drawable.main_icon4_2);  
  97.                         break;  
  98.                     case 2:  
  99.                         img1.setImageResource(R.drawable.main_icon1_2);  
  100.                         img2.setImageResource(R.drawable.main_icon2_2);  
  101.                         img3.setImageResource(R.drawable.main_icon3_1);  
  102.                         img4.setImageResource(R.drawable.main_icon4_2);  
  103.                         break;  
  104.                     case 3:  
  105.                         img1.setImageResource(R.drawable.main_icon1_2);  
  106.                         img2.setImageResource(R.drawable.main_icon2_2);  
  107.                         img3.setImageResource(R.drawable.main_icon3_2);  
  108.                         img4.setImageResource(R.drawable.main_icon4_1);  
  109.                         break;  
  110.                 }  
  111.             }  
  112.   
  113.             @Override  
  114.             public void onPageScrolled(int arg0, float arg1, int arg2) {  
  115.                 // TODO Auto-generated method stub  
  116.   
  117.             }  
  118.   
  119.             @Override  
  120.             public void onPageScrollStateChanged(int arg0) {  
  121.                 // TODO Auto-generated method stub  
  122.   
  123.             }  
  124.         };  
  125.   
  126.         AddActivitiesToViewPager();  
  127.         vp.setCurrentItem(0);  
  128.         vp.setOnPageChangeListener(pageChangeListener);  
  129.     }  
  130.   
  131.     private void AddActivitiesToViewPager() {  
  132.         List<View> mViews = new ArrayList<View>();  
  133.         Intent intent = new Intent();  
  134.   
  135.         intent.setClass(this, Activity_one.class);  
  136.         intent.putExtra("id"1);  
  137.         mViews.add(getView("QualityActivity1", intent));  
  138.   
  139.         intent.setClass(this, Activity_two.class);  
  140.         intent.putExtra("id"2);  
  141.         mViews.add(getView("QualityActivity2", intent));  
  142.   
  143.         intent.setClass(this, Activity_three.class);  
  144.         intent.putExtra("id"3);  
  145.         mViews.add(getView("QualityActivity3", intent));  
  146.   
  147.         intent.setClass(this, Activity_four.class);  
  148.         intent.putExtra("id"4);  
  149.         mViews.add(getView("QualityActivity4", intent));  
  150.   
  151.         viewPageAdapter = new MyViewPageAdapter(mViews);  
  152.         vp.setAdapter(viewPageAdapter);  
  153.   
  154.     }  
  155.   
  156.     private View getView(String id, Intent intent) {  
  157.         return manager.startActivity(id, intent).getDecorView();  
  158.   
  159.     }  
  160.   
  161. }  

MyViewPagerAdapter:

[java] view plain copy
  1. import android.support.v4.view.PagerAdapter;  
  2. import android.view.View;  
  3. import android.view.ViewGroup;  
  4.   
  5. import java.io.Serializable;  
  6. import java.util.List;  
  7.   
  8. public class MyViewPageAdapter extends PagerAdapter implements Serializable {  
  9.     private List<View> views;  
  10.   
  11.     public MyViewPageAdapter(List<View> views) {  
  12.         this.views = views;  
  13.     }  
  14.   
  15.     @Override  
  16.     public int getCount() {  
  17.         return views.size();  
  18.     }  
  19.   
  20.     @Override  
  21.     public boolean isViewFromObject(View arg0, Object arg1) {  
  22.         return arg0 == arg1;  
  23.     }  
  24.   
  25.     @Override  
  26.     public void destroyItem(ViewGroup container, int position, Object object) {  
  27.         container.removeView(views.get(position));  
  28.     }  
  29.   
  30.     @Override  
  31.     public Object instantiateItem(ViewGroup container, int position) {  
  32.         container.addView(views.get(position), 0);  
  33.         return views.get(position);  
  34.     }  
  35. }  

Activity_one:

[java] view plain copy
  1. import android.app.Activity;  
  2. import android.os.Bundle;  
  3.   
  4. public class Activity_one extends Activity {  
  5.     @Override  
  6.     protected void onCreate(Bundle savedInstanceState) {  
  7.         super.onCreate(savedInstanceState);  
  8.         setContentView(R.layout.layout1);  
  9.   
  10.     }  
  11. }  

activity_main:

[html] view plain copy
  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     android:layout_width="match_parent"  
  3.     android:layout_height="match_parent"  
  4.     android:background="#F5F3F2">  
  5.   
  6.     <android.support.v4.view.ViewPager  
  7.         android:id="@+id/viewpager"  
  8.         android:layout_width="match_parent"  
  9.         android:layout_height="match_parent"  
  10.         android:layout_above="@+id/titile" />  
  11.   
  12.     <LinearLayout  
  13.         android:id="@+id/titile"  
  14.         android:layout_width="match_parent"  
  15.         android:layout_height="70dp"  
  16.         android:layout_alignParentBottom="true"  
  17.         android:background="@drawable/tabbar_bg"  
  18.         android:orientation="horizontal">  
  19.   
  20.   
  21.         <ImageView  
  22.             android:id="@+id/main_img1"  
  23.             android:layout_width="0dp"  
  24.             android:layout_height="match_parent"  
  25.             android:layout_weight="1"  
  26.             android:src="@drawable/main_icon1_1" />  
  27.   
  28.   
  29.         <ImageView  
  30.             android:id="@+id/main_img2"  
  31.             android:layout_width="0dp"  
  32.             android:layout_height="match_parent"  
  33.             android:layout_weight="1"  
  34.             android:src="@drawable/main_icon2_2" />  
  35.   
  36.   
  37.         <ImageView  
  38.             android:id="@+id/main_img3"  
  39.             android:layout_width="0dp"  
  40.             android:layout_height="match_parent"  
  41.             android:layout_weight="1"  
  42.             android:src="@drawable/main_icon3_2" />  
  43.   
  44.   
  45.         <ImageView  
  46.             android:id="@+id/main_img4"  
  47.             android:layout_width="0dp"  
  48.             android:layout_height="match_parent"  
  49.             android:layout_weight="1"  
  50.             android:src="@drawable/main_icon4_2" />  
  51.   
  52.     </LinearLayout>  
  53.   
  54. </RelativeLayout>  


layout1:

[html] view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical" android:layout_width="match_parent"  
  4.     android:layout_height="match_parent">  
  5.   
  6.     <Button  
  7.         android:layout_width="wrap_content"  
  8.         android:layout_height="wrap_content"  
  9.         android:text="pager1"  
  10.         android:textSize="30sp"/>  
  11. </LinearLayout>