android引導頁的實現

完整的引導頁dome有三個界面,歡迎界面,引導界面,主界面

(如果除去歡迎界面,跟Fragment+ViewPager的實現的原理一樣)


工程結構:



引導界面,GuideActivity:

package ivo_chuanzhi.viewpager_guide;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageButton;
import android.widget.ImageView;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by chenjiacheng on 2015/8/9.
 */
public class GuideActivity extends Activity implements ViewPager.OnPageChangeListener {

    private ViewPager viewPager;
    private ViewPagerAdapter viewPagerAdapter;
    private List<View> views;

    private ImageView[] dots;
    private int[] ids = {R.id.id_iv1,R.id.id_iv2,R.id.id_iv3};

    private ImageButton imageButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.guide_activity);

        initViews();//實現ViewPager引導頁

        initDots();//引導頁導航的實現

    }

    private void initDots() {
        dots = new ImageView[views.size()];
        for(int i = 0;i < views.size();i++){
            dots[i] = (ImageView) findViewById(ids[i]);
        }
    }

    private void initViews() {

        LayoutInflater inflater = LayoutInflater.from(this);//通過LayoutInflater來加載自定義佈局的view

        views = new ArrayList<View>();//實例化View
        views.add(inflater.inflate(R.layout.one,null));//引入View,通過inflate引入
        views.add(inflater.inflate(R.layout.two,null));
        views.add(inflater.inflate(R.layout.three,null));

        viewPagerAdapter = new ViewPagerAdapter(views,this);//實例化viewPagerAdapter

        viewPager = (ViewPager) findViewById(R.id.id_ViewPager);
        viewPager.setAdapter(viewPagerAdapter);

        imageButton = (ImageButton) views.get(2).findViewById(R.id.id_imageButton);
        imageButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(GuideActivity.this,MainActivity.class);
                startActivity(intent);
                finish();
            }
        });

        viewPager.setOnPageChangeListener(this);
    }


    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}

    @Override
    public void onPageSelected(int position) {

        for(int i = 0;i < ids.length;i++){
            if(position == i){
                dots[i].setImageResource(R.mipmap.ic_liang);
            }else {
                dots[i].setImageResource(R.mipmap.ic_an);
            }
        }

    }

    @Override
    public void onPageScrollStateChanged(int state) {}
}

ViewPagerAdapter,繼承PagerAdapter:

其基礎介紹:http://blog.csdn.net/cjc_karen/article/details/47355585的最後地方有重寫PagerAdapter的介紹

package ivo_chuanzhi.viewpager_guide;

import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;


import java.util.List;

/**
 * Created by chenjiacheng on 2015/8/9.
 */
public class ViewPagerAdapter extends PagerAdapter{


    private List<View> views;
    private Context context;

    public ViewPagerAdapter(List<View> views,Context context){

        this.views = views;
        this.context = context;

    }


    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {

        ((ViewPager) container).removeView(views.get(position));
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        ((ViewPager) container).addView(views.get(position));
        return views.get(position);
    }

    @Override
    public int getCount() {
        return views.size();
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == object;
    }
}

主界面是空白的,是純自動生成,這裏就不列出


歡迎界面:

package ivo_chuanzhi.viewpager_guide;

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;

import android.os.Handler;


/**
 * Created by chenjiacheng on 2015/8/9.
 */
public class WelcomeActivity extends Activity {

    private boolean isFirstIn = false;//判斷是否第一次進入

    private static final int TIME = 2000;//沉睡時間
    private static final int GO_HOME = 1000;
    private static final int GO_GUIDE = 1001;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.welcome_activity);

        initFirstIn();
    }


    private Handler mHandler = new Handler(){
        public void handleMessage(android.os.Message msg) {
            switch (msg.what) {
                case GO_HOME:
                    goHome();
                    break;

                case GO_GUIDE:
                    goGuide();
                    break;
            }

        }
    };

    private void initFirstIn(){

        //用SharedPreferences保存數據
        SharedPreferences sharedPreferences = getSharedPreferences("cjc",MODE_PRIVATE);
        isFirstIn = sharedPreferences.getBoolean("isFirstIn",true);
        if(!isFirstIn){
            mHandler.sendEmptyMessageDelayed(GO_HOME,TIME);
        }else {
            mHandler.sendEmptyMessageDelayed(GO_GUIDE,TIME);
            //第二次打開就不經過引導頁了
            SharedPreferences.Editor editor = sharedPreferences.edit();
            editor.putBoolean("isFirstIn",false);
            editor.commit();
        }
    }

    private void goHome(){
        Intent intent = new Intent(WelcomeActivity.this,MainActivity.class);
        startActivity(intent);
        finish();
    }

    private void goGuide(){
        Intent intent = new Intent(WelcomeActivity.this,GuideActivity.class);
        startActivity(intent);
        finish();
    }



}


主界面佈局,也是純自動的,不列


guide_activity.xml:

<?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:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:id="@+id/id_ViewPager"

        >
    </android.support.v4.view.ViewPager>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:id="@+id/id_daohang"
        android:gravity="center_horizontal"
        android:layout_alignParentBottom="true">


        <ImageView
            android:layout_width="15dp"
            android:layout_height="15dp"
            android:id="@+id/id_iv1"
            android:src="@mipmap/ic_liang"/>
        <ImageView
            android:layout_width="15dp"
            android:layout_height="15dp"
            android:id="@+id/id_iv2"
            android:src="@mipmap/ic_an"/>
        <ImageView
            android:layout_width="15dp"
            android:layout_height="15dp"
            android:id="@+id/id_iv3"
            android:src="@mipmap/ic_an"/>

    </LinearLayout>


</LinearLayout>


one.xml    two.xml    three.xml基本一樣:

<?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">

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@mipmap/ic_launcher"/>

</LinearLayout>


welcome_activity.xml:

<?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">

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@mipmap/ic_welcome"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true" />



</RelativeLayout>


這就是全部了




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