• Android APP 引导页实现-第一次应用进入时加载


    APP引导页是每个优质APP必备的元素,下面我们研究一下如何只在第一次进入应用时进行加载引导页的方法。

    1.判断是否第一次进入应用的方法:

    [java] view plaincopy
     
    1. package com.yayun.guide;  
    2.    
    3. import android.app.Activity;  
    4. import android.content.Context;  
    5. import android.content.Intent;  
    6. import android.content.SharedPreferences;  
    7. import android.os.Bundle;  
    8. import android.os.Handler;  
    9. import android.os.Message;  
    10. import android.widget.Toast;  
    11.    
    12. /** 
    13.  * 功能:使用ViewPager实现初次进入应用时的引导页 
    14.  *  
    15.  * (1)判断是否是首次加载应用--采取读取SharedPreferences的方法 
    16.  * (2)是,则进入引导activity;否,则进入MainActivity 
    17.  * (3)5s后执行(2)操作 
    18.  *  
    19.  * @author yayun 
    20.  * 
    21.  */  
    22. public class SplashActivity extends Activity {  
    23.    
    24.     @Override  
    25.     protected void onCreate(Bundle savedInstanceState) {  
    26.         super.onCreate(savedInstanceState);  
    27.         //setContentView(R.layout.activity_splash);  
    28.            
    29.         boolean mFirst = isFirstEnter(SplashActivity.this,SplashActivity.this.getClass().getName());  
    30.         Toast.makeText(this, mFirst+"", Toast.LENGTH_SHORT).show();  
    31.         if(mFirst)  
    32.             mHandler.sendEmptyMessageDelayed(SWITCH_GUIDACTIVITY,100);  
    33.         else  
    34.             mHandler.sendEmptyMessageDelayed(SWITCH_MAINACTIVITY,100);  
    35.         SharedPreferences sharedPreferences= this.getSharedPreferences("my_pref", MODE_PRIVATE);  
    36.         sharedPreferences.edit().putString("guide_activity", "false").commit();  
    37.           
    38.           
    39.     }     
    40.        
    41.     //****************************************************************  
    42.     // 判断应用是否初次加载,读取SharedPreferences中的guide_activity字段  
    43.     //****************************************************************  
    44.     private static final String SHAREDPREFERENCES_NAME = "my_pref";  
    45.     private static final String KEY_GUIDE_ACTIVITY = "guide_activity";  
    46.     private boolean isFirstEnter(Context context,String className){  
    47.         if(context==null || className==null||"".equalsIgnoreCase(className))return false;  
    48.         String mResultStr = context.getSharedPreferences(SHAREDPREFERENCES_NAME, Context.MODE_WORLD_READABLE)  
    49.                  .getString(KEY_GUIDE_ACTIVITY, "");//取得所有类名 如 com.my.MainActivity  
    50.         if(mResultStr.equalsIgnoreCase("false"))  
    51.             return false;  
    52.         else  
    53.             return true;  
    54.     }  
    55.        
    56.        
    57.     //*************************************************  
    58.     // Handler:跳转至不同页面  
    59.     //*************************************************  
    60.     private final static int SWITCH_MAINACTIVITY = 1000;  
    61.     private final static int SWITCH_GUIDACTIVITY = 1001;  
    62.     public Handler mHandler = new Handler(){  
    63.         public void handleMessage(Message msg) {  
    64.             switch(msg.what){  
    65.             case SWITCH_MAINACTIVITY:  
    66.                 Intent mIntent = new Intent();  
    67.                 mIntent.setClass(SplashActivity.this, Welcome.class);  
    68.                 SplashActivity.this.startActivity(mIntent);  
    69.                 SplashActivity.this.finish();  
    70.                 break;  
    71.             case SWITCH_GUIDACTIVITY:  
    72.                 mIntent = new Intent();  
    73.                 mIntent.setClass(SplashActivity.this, GuideActivity.class);  
    74.                 SplashActivity.this.startActivity(mIntent);  
    75.                 SplashActivity.this.finish();  
    76.                 break;  
    77.             }  
    78.             super.handleMessage(msg);  
    79.         }  
    80.     };  
    81. }  


    原理很简单,进入的时候进行判断有无存值,若无存值则表示第一次进入,这时跳入应用引导页,否则,跳入主页面。

    2.ViewPager实现翻页效果:

    [java] view plaincopy
     
    1. package com.yayun.guide;  
    2.   
    3. import java.util.ArrayList;  
    4. import java.util.List;  
    5.   
    6. import android.app.Activity;  
    7. import android.content.Intent;  
    8. import android.os.Bundle;  
    9. import android.support.v4.view.PagerAdapter;  
    10. import android.support.v4.view.ViewPager;  
    11. import android.support.v4.view.ViewPager.OnPageChangeListener;  
    12. import android.view.LayoutInflater;  
    13. import android.view.View;  
    14. import android.view.View.OnClickListener;  
    15. import android.view.ViewGroup;  
    16. import android.view.Window;  
    17. import android.widget.Button;  
    18. import android.widget.LinearLayout;  
    19.   
    20. public class GuideActivity extends Activity implements OnClickListener  
    21. {  
    22.   
    23.     private ViewPager mViewPager;  
    24.     private PagerAdapter mAdapter;  
    25.     private List<View> mViews = new ArrayList<View>();  
    26.     // TAB  
    27.   
    28.     private LinearLayout mTabWeixin;  
    29.     private LinearLayout mTabFrd;  
    30.     private LinearLayout mTabAddress;  
    31.     private LinearLayout mTabSetting;  
    32.       
    33.     private Button mEnterButton;  
    34.       
    35.   
    36.       
    37.   
    38.     @Override  
    39.     protected void onCreate(Bundle savedInstanceState)  
    40.     {  
    41.         super.onCreate(savedInstanceState);  
    42.         requestWindowFeature(Window.FEATURE_NO_TITLE);  
    43.         setContentView(R.layout.activity_main);  
    44.   
    45.         initView();  
    46.   
    47.         initEvents();  
    48.   
    49.     }  
    50.   
    51.     private void initEvents()  
    52.     {  
    53.       
    54.   
    55.         mViewPager.setOnPageChangeListener(new OnPageChangeListener()  
    56.         {  
    57.   
    58.             @Override  
    59.             public void onPageSelected(int arg0)  
    60.             {  
    61.                   
    62.   
    63.             }  
    64.   
    65.             @Override  
    66.             public void onPageScrolled(int arg0, float arg1, int arg2)  
    67.             {  
    68.   
    69.             }  
    70.   
    71.             @Override  
    72.             public void onPageScrollStateChanged(int arg0)  
    73.             {  
    74.   
    75.             }  
    76.         });  
    77.     }  
    78.   
    79.     private void initView()  
    80.     {  
    81.         mViewPager = (ViewPager) findViewById(R.id.id_viewpager);  
    82.       
    83.   
    84.         LayoutInflater mInflater = LayoutInflater.from(this);  
    85.         View tab01 = mInflater.inflate(R.layout.tab01, null);  
    86.         View tab02 = mInflater.inflate(R.layout.tab02, null);  
    87.         View tab03 = mInflater.inflate(R.layout.tab03, null);  
    88.         View tab04 = mInflater.inflate(R.layout.tab04, null);  
    89.         mViews.add(tab01);  
    90.         mViews.add(tab02);  
    91.         mViews.add(tab03);  
    92.         mViews.add(tab04);  
    93.         mEnterButton=(Button)tab04.findViewById(R.id.imgbtn_enter);  
    94.         mEnterButton.setOnClickListener(new OnClickListener() {  
    95.               
    96.             @Override  
    97.             public void onClick(View v) {  
    98.                 Intent intent=new Intent(GuideActivity.this,Welcome.class);  
    99.                 startActivity(intent);  
    100.                   
    101.             }  
    102.         });  
    103.   
    104.         mAdapter = new PagerAdapter()  
    105.         {  
    106.   
    107.             @Override  
    108.             public void destroyItem(ViewGroup container, int position,  
    109.                     Object object)  
    110.             {  
    111.                 container.removeView(mViews.get(position));  
    112.             }  
    113.   
    114.             @Override  
    115.             public Object instantiateItem(ViewGroup container, int position)  
    116.             {  
    117.                 View view = mViews.get(position);  
    118.                 container.addView(view);  
    119.                 return view;  
    120.             }  
    121.   
    122.             @Override  
    123.             public boolean isViewFromObject(View arg0, Object arg1)  
    124.             {  
    125.                 return arg0 == arg1;  
    126.             }  
    127.   
    128.             @Override  
    129.             public int getCount()  
    130.             {  
    131.                 return mViews.size();  
    132.             }  
    133.         };  
    134.   
    135.         mViewPager.setAdapter(mAdapter);  
    136.   
    137.     }  
    138.   
    139.     @Override  
    140.     public void onClick(View v) {  
    141.           
    142.     }  
    143.   
    144.   
    145. }  


    3.引导页布局文件:

    [html] view plaincopy
     
    1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    2.     xmlns:tools="http://schemas.android.com/tools"  
    3.     android:layout_width="match_parent"  
    4.     android:layout_height="match_parent"  
    5.     android:orientation="vertical" >  
    6.   
    7.   
    8.     <android.support.v4.view.ViewPager  
    9.         android:id="@+id/id_viewpager"  
    10.         android:layout_width="match_parent"  
    11.         android:layout_height="match_parent"  
    12.          >  
    13.     </android.support.v4.view.ViewPager>  
    14.   
    15.   
    16. </LinearLayout>  


    下面运行一下代码:

    我们可以发现,第一次进入页面的时候,Toast打印出true,表示应用第一次进入,这时加载引导页。

    退出应用,再一次进入时,Toast打印false,表示应用已经不是不是第一次进入了。这时我们的功能基本实现了。

  • 相关阅读:
    面试容易问到的Linux问题
    Java面试题复习笔记(框架)
    Java面试题复习笔记(前端)
    Java面试题复习笔记(数据库)
    Java面试题复习笔记(Web方向)
    【刷题-LeetCode】191 Number of 1 Bits
    【数学】随机方法计算逆矩阵
    【刷题-LeetCode】190 Reverse Bits
    【刷题-LeetCode】188 Best Time to Buy and Sell Stock IV
    python 30 面向对象之 多态
  • 原文地址:https://www.cnblogs.com/huoshenmanbu/p/4881483.html
Copyright © 2020-2023  润新知