在Android應用中, 當我們首次使用某一個應用的時候,都會給我們有一個引導頁,顯示該軟件的功能等一些信息,讓用戶能夠大概瞭解該軟的基本情況。實現該功能可以使用ViewPager來實現,
實現過程:
效果如下:
一
二:
實現過如下:
佈局
如下的ImageView爲引導頁中的小圓點
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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">
<android.support.v4.view.ViewPager
android:id="@+id/gideviewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center" />
<LinearLayout
android:id="@+id/point_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center">
<ImageView
android:layout_width="10dp"
android:layout_height="10dp"
android:layout_marginLeft="160dp"
android:src="@drawable/s" />
<ImageView
android:id="@+id/imageView"
android:layout_width="10dp"
android:layout_height="10dp"
android:src="@drawable/k" />
<ImageView
android:layout_width="10dp"
android:layout_height="10dp"
android:layout_alignBottom="@+id/imageView"
android:src="@drawable/k" />
<ImageView
android:layout_width="10dp"
android:layout_height="10dp"
android:src="@drawable/k" />
</LinearLayout>
</FrameLayout>
當然引導頁的圖片也要分別放入一個佈局中。
在MianActivity中與pageView使用相似,需要適配器,並且需要實現 ViewPager.OnPageChangeListene 接口。
具體代碼如下:
public class GideActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener {
private ViewPager viewPager;
private ArrayList<View> views = new ArrayList<>();
private ImageView [] imageViews ;
private int currentindex = 0 ;// 當前正在顯示的卡頁
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gidemain);
invitViews();
initPoit();
}
private void invitViews() {
viewPager = (ViewPager) findViewById(R.id.gideviewpager);
views.add(getLayoutInflater().inflate(R.layout.layout1, null));
views.add(getLayoutInflater().inflate(R.layout.layout2, null));
views.add(getLayoutInflater().inflate(R.layout.layout3, null));
views.add(getLayoutInflater().inflate(R.layout.layout4, null));
viewPager.setOnPageChangeListener(this);
viewPager.setAdapter(new MypageAdapter());
}
// 設置小圓點的圖片(滑動時改變小圓點的位置)
private void setCurrentPoint (int position) {
//position 代表的是當前選中(滑動到的頁面)。currentindex爲當前的頁面
if (currentindex<0 || currentindex==position || currentindex>imageViews.length-1){
return;
}
imageViews[currentindex].setImageResource(R.drawable.k);
imageViews[position].setImageResource(R.drawable.s);
currentindex= position;
}
// 初始化
private void initPoit() {
LinearLayout pointer = (LinearLayout) findViewById(R.id.point_layout);
imageViews= new ImageView[views.size()];
for (int i = 0 ; i < imageViews.length; i++){
// 循環獲取每一個組件
imageViews[i]= (ImageView)pointer.getChildAt(i);
}
currentindex =0;
// 首次初始化的時候將當前頁的圓圈設置爲實心的
imageViews[currentindex].setImageResource(R.drawable.s);
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
// 選中的位置
@Override
public void onPageSelected(int position) {
setCurrentPoint (position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
class MypageAdapter extends PagerAdapter {
@Override
public int getCount() {
return views.size();
}
// 實例化每一個佈局
@Override
public Object instantiateItem(ViewGroup container, int position) {
View v = views.get(position);
container.addView(v);
return v;
}
// 刪除選項卡
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(views.get(position));
}
// 判斷當前視圖V是否爲返回的對象
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
}
}