Android 歡迎頁面 引導頁
阿新 • • 發佈:2019-01-24
實現歡迎頁和引導頁需要三個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 class2.GuideActivityWelcomeActivity 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){ caseGO_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(); } }
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主要佈局和邏輯即可。
執行效果如下: