android實現首次啓動引導

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;
        }
    }
}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章