生活随笔
收集整理的這篇文章主要介紹了
引导界面(二)使用ViewPager实现欢迎引导页面
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本系列文章都會以一個程序的實例開發為主線來進行講解,以求達到一個循序漸進的學習效果,這樣更能加深大家對于程序為什么要這樣寫的用意,理論加上實際的應用才能達到事半功倍的效果,不是嗎?
? ? ? ?最下方有源碼的下載地址,幾乎源碼的每一行都有注釋,寫的通俗易懂,非常清晰,如有不懂的可以留言,本博主一定盡心盡力,為大家答題解惑,希望大家多多支持,好的,話不多說,讓我們回歸到今天的正題。
一、實現的效果圖
? ? ? ? 也許是養成了這樣一個習慣,每次看別人的代碼前,必須要先看實現的效果圖達到了一個什么樣的效果,是不是跟自己想要實現的效果類似,有圖才有真相嘛,呵呵。
二、編碼前的準備工作
? ? ? ?ViewPager是Android3.0之后提供的新特性,所以要想讓你的應用向下兼容就必須要android-support-v4.jar這個包的支持,這是一個來自google提供的一個附加包。大家搜下即可。
三、項目結構圖
四、具體的編碼實現
1、??布局界面比較簡單,加入ViewPager組件,以及底部的引導小點,activity_main.xml:
[html]?view plaincopy
<RelativeLayout?xmlns:android="http://schemas.android.com/apk/res/android"?? ????xmlns:tools="http://schemas.android.com/tools"?? ????android:layout_width="wrap_content"?? ????android:layout_height="wrap_content">?? ?? ?????<android.support.v4.view.ViewPager?? ????????android:id="@+id/viewpager"?? ????????android:layout_width="fill_parent"?? ????????android:layout_height="fill_parent"?/>?? ?? ?????<LinearLayout?? ????????android:id="@+id/ll"?? ????????android:layout_width="wrap_content"?? ????????android:layout_height="wrap_content"?? ????????android:layout_alignParentBottom="true"?? ????????android:layout_centerHorizontal="true"?? ????????android:layout_marginBottom="24.0dip"?? ????????android:orientation="horizontal">?? ??? ????????<ImageView?? ????????????android:layout_width="wrap_content"?? ????????????android:layout_height="wrap_content"?? ????????????android:layout_gravity="center_vertical"?? ????????????android:clickable="true"?? ????????????android:padding="15.0dip"?? ????????????android:src="@drawable/point"/>?? ????????<ImageView?? ????????????android:layout_width="wrap_content"?? ????????????android:layout_height="wrap_content"?? ????????????android:layout_gravity="center_vertical"?? ????????????android:clickable="true"?? ????????????android:padding="15.0dip"?? ????????????android:src="@drawable/point"/>?? ????????<ImageView?? ????????????android:layout_width="wrap_content"?? ????????????android:layout_height="wrap_content"?? ????????????android:layout_gravity="center_vertical"?? ????????????android:clickable="true"?? ????????????android:padding="15.0dip"?? ????????????android:src="@drawable/point"/>?? ????????<ImageView?? ????????????android:layout_width="wrap_content"?? ????????????android:layout_height="wrap_content"?? ????????????android:layout_gravity="center_vertical"?? ????????????android:clickable="true"?? ????????????android:padding="15.0dip"?? ????????????android:src="@drawable/point"/>?? ????</LinearLayout>?? </RelativeLayout>?? 2、其中小點的圖片用一個selector來控制顏色,point.xml:
[html]?view plaincopy
<?xml?version="1.0"?encoding="UTF-8"?>?? <selector?? ??xmlns:android="http://schemas.android.com/apk/res/android">?? ????<item?android:state_enabled="true"?android:drawable="@drawable/point_normal"?/>?? ????<item?android:state_enabled="false"?android:drawable="@drawable/point_select"?/>?? </selector>?? 3、?ViewPager適配器代碼,ViewPagerAdapter.java:
[java]?view plaincopy
package?com.yangyu;?? ?? import?java.util.ArrayList;?? ?? import?android.support.v4.view.PagerAdapter;?? import?android.support.v4.view.ViewPager;?? import?android.view.View;?? ?? ? ? ? ?? public?class?ViewPagerAdapter?extends?PagerAdapter?{?? ?????? ?????? ????private?ArrayList<View>?views;?? ?????? ????public?ViewPagerAdapter?(ArrayList<View>?views){?? ????????this.views?=?views;?? ????}?? ????????? ????? ? ?? ????@Override?? ????public?int?getCount()?{?? ?????????if?(views?!=?null)?{?? ?????????????return?views.size();?? ?????????}???????? ?????????return?0;?? ????}?? ?? ????? ? ?? ????@Override?? ????public?Object?instantiateItem(View?view,?int?position)?{?? ????????? ????????((ViewPager)?view).addView(views.get(position),?0);?? ????????? ????????return?views.get(position);?? ????}?? ?????? ????? ? ?? ????@Override?? ????public?boolean?isViewFromObject(View?view,?Object?arg1)?{?? ????????return?(view?==?arg1);?? ????}?? ?? ????? ? ?? ????@Override?? ????public?void?destroyItem(View?view,?int?position,?Object?arg2)?{?? ????????((ViewPager)?view).removeView(views.get(position));????????? ????}?? }?? 4、主程序入口類,MainActivity.java:
[java]?view plaincopy
package?com.yangyu;?? ?? import?java.util.ArrayList;?? ?? import?android.app.Activity;?? import?android.os.Bundle;?? import?android.support.v4.view.ViewPager;?? import?android.support.v4.view.ViewPager.OnPageChangeListener;?? import?android.view.View;?? import?android.view.View.OnClickListener;?? import?android.widget.ImageView;?? import?android.widget.LinearLayout;?? ?? import?com.example.myguideview01.R;?? ?? ? ? ? ?? public?class?MainActivity?extends?Activity?implements?OnClickListener,OnPageChangeListener?{?? ?????? ????private?ViewPager?viewPager;?? ?????? ?????? ????private?ViewPagerAdapter?vpAdapter;?? ?????? ?????? ????private?ArrayList<View>?views;?? ?? ?????? ????????private?static?final?int[]?pics?=?{R.drawable.guide1,R.drawable.guide2,R.drawable.guide3,R.drawable.guide4};?? ?????? ?????????? ????????private?ImageView[]?points;?? ?????? ?????????? ????????private?int?currentIndex;?? ?????? ????@Override?? ????protected?void?onCreate(Bundle?savedInstanceState)?{?? ????????super.onCreate(savedInstanceState);?? ????????setContentView(R.layout.activity_main);?? ?????????? ????????initView();?? ?????????? ????????initData();??? ????}?? ?? ????? ? ?? ????private?void?initView(){?? ?????????? ????????views?=?new?ArrayList<View>();?? ?????????? ?????????? ????????viewPager?=?(ViewPager)?findViewById(R.id.viewpager);?? ?????????? ?????????? ????????vpAdapter?=?new?ViewPagerAdapter(views);?? ????}?? ?????? ????? ? ?? ????private?void?initData(){?? ?????????? ????????LinearLayout.LayoutParams?mParams?=?new?LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,?? ??????????????????????????????????????????????????????????????????????????LinearLayout.LayoutParams.FILL_PARENT);?? ????????? ?????????? ????????for(int?i=0;?i<pics.length;?i++)?{?? ????????????ImageView?iv?=?new?ImageView(this);?? ????????????iv.setLayoutParams(mParams);?? ????????????iv.setImageResource(pics[i]);?? ????????????views.add(iv);?? ????????}??? ?????????? ?????????? ????????viewPager.setAdapter(vpAdapter);?? ?????????? ????????viewPager.setOnPageChangeListener(this);?? ?????????? ?????????? ????????initPoint();?? ????}?? ?????? ????? ? ?? ????private?void?initPoint(){?? ????????LinearLayout?linearLayout?=?(LinearLayout)?findViewById(R.id.ll);????????? ?????????? ????????points?=?new?ImageView[pics.length];?? ?? ?????????? ????????for?(int?i?=?0;?i?<?pics.length;?i++)?{?? ?????????????? ????????????points[i]?=?(ImageView)?linearLayout.getChildAt(i);?? ?????????????? ????????????points[i].setEnabled(true);?? ?????????????? ????????????points[i].setOnClickListener(this);?? ?????????????? ????????????points[i].setTag(i);?? ????????}?? ?????????? ?????????? ????????currentIndex?=?0;?? ?????????? ????????points[currentIndex].setEnabled(false);?? ????}?? ?????? ????? ? ?? ????@Override?? ????public?void?onPageScrollStateChanged(int?arg0)?{?? ?? ????}?? ?????? ????? ? ?? ?? ????@Override?? ????public?void?onPageScrolled(int?arg0,?float?arg1,?int?arg2)?{?? ?? ????}?? ?????? ????? ? ?? ?? ????@Override?? ????public?void?onPageSelected(int?position)?{?? ?????????? ????????setCurDot(position);?? ????}?? ?? ????? ? ?? ????@Override?? ????public?void?onClick(View?v)?{?? ?????????int?position?=?(Integer)v.getTag();?? ?????????setCurView(position);?? ?????????setCurDot(position);????????? ????}?? ?? ????? ? ?? ????private?void?setCurView(int?position){?? ?????????if?(position?<?0?||?position?>=?pics.length)?{?? ?????????????return;?? ?????????}?? ?????????viewPager.setCurrentItem(position);?? ?????}?? ?? ?????? ? ?? ????private?void?setCurDot(int?positon){?? ?????????if?(positon?<?0?||?positon?>?pics.length?-?1?||?currentIndex?==?positon)?{?? ?????????????return;?? ?????????}?? ?????????points[positon].setEnabled(false);?? ?????????points[currentIndex].setEnabled(true);?? ?? ?????????currentIndex?=?positon;?? ?????}???? }?? ? ? ? ? ?這篇主要是讓大家能夠實現一個簡單的例子,讓你的程序先動起來,才有信心和勇氣挑戰更復雜的UI設計和開發,在后面的幾篇章節中,博主也會以同樣生動和富有激情的講解,給大家帶來更加的復雜的演示和代碼,如仿微信、和人人網的引導界面的開發,加入了動畫的效果,運行起來也會更炫一點。
源碼下載地址
- 上一篇【Android UI設計與開發】第01期:引導界面(一)ViewPager介紹和使用詳解
- 下一篇【Android UI設計與開發】第03期:引導界面(三)仿微信引導界面以及動畫效果
總結
以上是生活随笔為你收集整理的引导界面(二)使用ViewPager实现欢迎引导页面的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。