Android:仿微信開場切換界面


這實例很多人仿做,好實例還是不容錯過!最重要是素材容易拿~

效果:

默認3頁面的切換,最后一個頁面帶按鈕,點擊進入另外一個頁面

 

思路:

1、准備5個布局頁面,1個為主函數布局頁面,3個為切換的頁面(其一帶按鈕),1個為按鈕點擊進入的頁面(這個需要Activity)。

2、用適配器綁定相應的view,設置適配器

3、制作點點,設置監聽事件控制點點

4、設置按鈕的點擊事件

 

主要代碼:

主布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"  
android:layout_width="match_parent"
android:layout_height="wrap_content"
>       
</android.support.v4.view.ViewPager>
</LinearLayout>

有按鈕的切換頁布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/whatsnew_page01"
     >
      
            <Button 
        android:id="@+id/comein"
        android:layout_width="120dp"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:text="進入微信"
        android:textColor="#ffffff"
        android:layout_centerInParent="true"
        android:background="@drawable/btn_selector"
         android:onClick="startbutton"
        />
        
</RelativeLayout>

程序代碼:

  1 public class MainActivity extends Activity {
  2 private ViewPager viewpager;
  3 private ArrayList<View>views ;
  4 
  5 //點點
  6 private ViewGroup listgroup;
  7 private ImageView imageview;
  8 private ImageView[] imageviewArr;
  9 
 10     @Override
 11     protected void onCreate(Bundle savedInstanceState) {
 12         super.onCreate(savedInstanceState);
 13         //設置無標題欄
 14         requestWindowFeature(Window.FEATURE_NO_TITLE);
 15         
 16         setContentView(R.layout.start);
 17         
 18         //內容
 19         viewpager = (ViewPager) findViewById(R.id.viewpager);       
 20         views = new ArrayList<View>();       
 21         
 22         
 23         //把view加入數組
 24         LayoutInflater lf = getLayoutInflater();
 25         View v1 =lf.inflate(R.layout.w1, null);
 26         View v2 =lf.inflate(R.layout.w2, null);
 27         View v3 =lf.inflate(R.layout.w3, null);             
 28         views.add(v1);
 29         views.add(v2);
 30         views.add(v3);       
 31         
 32         
 33         /*
 34          * 把點加入ViewGroup
 35          * */
 36         listgroup = (ViewGroup) findViewById(R.id.listgroup);
 37         //有多少個界面數組就包含多少個點
 38         imageviewArr = new ImageView[views.size()];
 39         //生成每個點
 40         for(int i=0;i<views.size();i++){
 41             imageview = new ImageView(MainActivity.this);
 42             //設置點的寬和高
 43             imageview.setLayoutParams(new LayoutParams(9,9));
 44             //設置點padding(左,上,右,下)
 45             imageview.setPadding(20, 0, 20, 0);
 46 
 47             
 48             //放入數組
 49             imageviewArr[i]=imageview;
 50             
 51             //設置第一個點樣式為選中狀態,其他為默認狀態
 52             if(i==0){
 53                 imageview.setBackgroundResource(R.drawable.page_indicator_focused);
 54             }else{
 55                 imageview.setBackgroundResource(R.drawable.page_indicator_unfocused);
 56             }
 57             
 58             listgroup.addView(imageviewArr[i]); 
 59             
 60         }
 61         
 62         
 63        //綁定適配器
 64        viewpager.setAdapter(new ViewPagerAdapter());
 65        
 66        //設置監聽器,切換時,點樣式同步切換
 67        viewpager.setOnPageChangeListener(new listChangerListener());
 68     }
 69 
 70     
 71     
 72     
 73     /*
 74      * viewpager的適配器
 75      * */
 76     public class ViewPagerAdapter extends PagerAdapter{
 77         //實現PagerAdapter至少要覆蓋以下方法
 78         @Override
 79         //返回窗體界面數
 80         public int getCount() {
 81             // TODO Auto-generated method stub
 82             return views.size();
 83         }
 84 
 85         @Override
 86         //判斷對象是否生成界面
 87         public boolean isViewFromObject(View arg0, Object arg1) {
 88             // TODO Auto-generated method stub
 89             return arg0==arg1;
 90         }
 91 
 92 
 93         @Override
 94         //銷毀一個界面
 95         public void destroyItem(View container, int position, Object object) {
 96             // TODO Auto-generated method stub
 97             ((ViewPager)container).removeView(views.get(position));            
 98         }
 99         
100         @Override
101         //初始化界面
102         public Object instantiateItem(View container, int position) {
103             // TODO Auto-generated method stub
104             ((ViewPager)container).addView(views.get(position));
105             return views.get(position);
106         }
107         
108     }
109 
110     
111     /*
112      * viewpager的監聽器
113      * */
114     public class listChangerListener implements OnPageChangeListener{
115 
116         @Override
117         public void onPageScrollStateChanged(int arg0) {
118             // TODO Auto-generated method stub
119             
120         }
121 
122         @Override
123         public void onPageScrolled(int arg0, float arg1, int arg2) {
124             // TODO Auto-generated method stub
125             
126         }
127 
128         @Override
129         public void onPageSelected(int arg0) {
130             // TODO Auto-generated method stub
131             for(int i=0;i<imageviewArr.length;i++){
132                 //當前索引為arg0,循環所有點,如果i為當前索引。則i樣式為選中狀態
133                 imageviewArr[arg0].setBackgroundResource(R.drawable.page_indicator_focused);
134                 if(arg0 !=i){
135                 //否則樣式為未選中狀態    
136                 imageviewArr[i].setBackgroundResource(R.drawable.page_indicator_unfocused);
137                 }
138             }
139             
140         }
141         
142     }
143     
144     //點擊按鈕打開新頁面
145     public void startbutton(View v) {
146         Intent intent = new Intent(MainActivity.this, HomeActivity.class);
147         startActivity(intent);
148         MainActivity.this.finish();
149     }
150 
151 
152 
153 }

 

>>>>>>>>>>>>>>>>>>實例下載

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM