1. 程式人生 > >Android 歡迎頁面 引導頁

Android 歡迎頁面 引導頁

實現歡迎頁和引導頁需要三個Activity,一個是實現歡迎頁的Activity,在這個類中我們除了加入歡迎頁還會加入廣告頁,一般開啟APP是最先進入的是這個Activity,命名為WelcomeActivity。第二個是實現引導頁的Activity,如果第一次安裝APP才會跳到這個Activity,第二次開啟就不會跳到這了,所以在這裡需要一個判斷,判斷是否是第一次進入該APP的,命名為GuideActivity。第三個是主介面的MainActivity,這就不多說了。下面是這幾個Activity的程式碼,在Android Studio中實現的。

1.WelcomeActivity

注意,這裡需要在Manifest.xml檔案中進行設定,將Welcome

Activity設定為最先開啟的activity.

<activity
android:name=".WelcomeActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

public class 
WelcomeActivity extends AppCompatActivity { private static final int TIME=5000; private static final int GO_MAIN=100; private static final int GO_GUIDE=101; Handler mhandler=new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what){ case
GO_MAIN: goMain(); break; case GO_GUIDE: goGuide(); break; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_welcome); init(); } private void init() { SharedPreferences sf=getSharedPreferences("data", MODE_PRIVATE);//判斷是否是第一次進入 boolean isFirstIn=sf.getBoolean("isFirstIn", true);SharedPreferences.Editor editor=sf.edit(); if(isFirstIn){ //若為true,則是第一次進入 editor.putBoolean("isFirstIn", false); mhandler.sendEmptyMessageDelayed(GO_GUIDE,TIME);//將歡迎頁停留5秒,並且將message設定為跳轉到 引導頁SplashActivity,跳轉在goGuide中實現 else{ mhandler.sendEmptyMessageDelayed(GO_MAIN,TIME);//將歡迎頁停留5秒,並且將message設定文跳轉到 MainActivity,跳轉功能在goMain中實現 } editor.commit(); } private void goMain() { 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(); } }
2.GuideActivity
public class GuideActivity extends AppCompatActivity {
    private ViewPager viewPager;//需要ViewPaeger    private PagerAdapter mAdapter;//需要PagerAdapter介面卡
    private List<View> mViews=new ArrayList<>();//準備資料來源
    private Button bt_home;//在ViewPager的最後一個頁面設定一個按鈕,用於點選跳轉到MainActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
setContentView(R.layout.activity_guide);
initView();//初始化view
}

    private void initView() {
        viewPager= (ViewPager) findViewById(R.id.view_pager);
LayoutInflater inflater=LayoutInflater.from(this);//將每個xml檔案轉化為View
View guideOne=inflater.inflate(R.layout.guidance01, null);//每個xml中就放置一個imageView
View guideTwo=inflater.inflate(R.layout.guidance02,null);
View guideThree=inflater.inflate(R.layout.guidance03,null);
mViews.add(guideOne);//將view加入到list中
mViews.add(guideTwo);
mViews.add(guideThree);
mAdapter=new PagerAdapter() {
            @Override
public Object instantiateItem(ViewGroup container, int position) {
                View view=mViews.get(position);//初始化介面卡,將view加到container中
container.addView(view);
                return view;
}

            @Override
public void destroyItem(ViewGroup container, int position, Object object) {
                View view=mViews.get(position);
container.removeView(view);//將view從container中移除
}

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

            @Override
public boolean isViewFromObject(View view, Object object) {
                return view==object;//判斷當前的view是我們需要的物件
}
        };
viewPager.setAdapter(mAdapter);
bt_home= (Button) guideThree.findViewById(R.id.to_Main);
bt_home.setOnClickListener(new View.OnClickListener() {
            @Override
public void onClick(View v) {
                Intent intent=new Intent(GuideActivity.this,MainActivity.class);
startActivity(intent);
finish();
}
        });
}
}

使用ViewPager實現引導頁圖片的滑動效果,注意在滑動到最後一個介面時(即guideThree時),會在這個介面加入一個Button按鈕,設定點選事件以便於點選該按鈕能夠進入MainActivity介面。guidance01.xml,guidance02.xml,guidance03.xml如下所示。

guidance01.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/splash_one"/>
</LinearLayout>
guidance02.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
    <ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/splash_two"/>
</LinearLayout>
guidance03.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
    <ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/splash_three"/>
    <LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="20dp">
    <Button
android:id="@+id/to_Main"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#0000"
android:text="進入主頁"/>
    </LinearLayout>
</RelativeLayout>
注意在guidance03.xml檔案中,只能使用RelativeLayout,下面的佈局才能顯示出來。

activity_guide.xml 檔案如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.example.cnlive.viewpager.MainActivity"
tools:showIn="@layout/activity_main">
   <android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="wrap_content">
   </android.support.v4.view.ViewPager>
    <Button
android:id="@+id/to_Main"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="進入首頁"
android:layout_alignParentBottom="true"
android:layout_marginBottom="70dp"
android:layout_centerHorizontal="true"/>
</RelativeLayout>

加入了一個Viewpager和一個Button按鈕,Button按鈕是為了點選後直接能夠跳轉到MainActivity。

3. MainActivity

加入APP主要佈局和邏輯即可。

執行效果如下: