一般應用程序第一次進入會進入引導頁,顯示一些廣告;之后再次進入會進入閃屏頁面,顯示一些廣告,公司、個人的logo,同時進行數據的初始化、字體的自定義,然后直接進入首頁頁面
isFirst = SASharedPreference.getBoolean(this, "is_first", true);//第一次為空,賦值為true
if (isFirst) {
進入引導頁;
SASharedPreference.putBoolean(this, "is_first", false);順便修改isFirst值為false
else {
進入主頁;
}
自定義主題
在res/values目錄下的style里自定義:
<style name = "Theme1" parent = "Theme.AppCompat.Light.NoActionBar">
<item name="windowNoTitle">true </item>
<item name=""></item>
......
</style>
然后在清單文件AndroidManifest.xml文件中
<activity android:name=""
android:theme="@style/Theme1"?
></activity>
//設置字體的封裝 在main文件夾新建目錄assets-fonts-(具體字體文件名.ttf)
在靜態工具類封裝一個方法setFont
public static void setFont(Context context,TextView textView) {
Typeface typeface = Typeface.createFromAsset(context.getAssets(),"fonts/RobotoCondensed-BoldItalic.ttf");
textView.setTypeface(typeface);
}
在主Activity調用UtilTools.setFont(tv_showPage);//tv_showPage是TextView對象
打開app進入閃屏頁(等待2秒),若是第一次就進入引導頁面,若不是第一次就進入主頁
private Handler? handler = new Handler() {
void handMessage(Message msg) {
? switch(msg.what) {
case TAG://收到信息
if (isFirst) {//進入引導頁
}else {//進入主頁
}
break;
}
}
};
initView () {
handler.sendEmptyMessageDelayed(TAG,2000);//延遲2000ms發送消息
}
引導頁
private List<View>? mView= new ArrayList<>();
private View view1, view2, view3;
view1= View.inflate(this,R.layout.page_item_one, null);
...
mView.add(view1);//添加ViewPager的具體頁面
...
activity_guide.xml文件包含一個ViewPager和對應的共同布局(圖片加文字)以及一個右上角的“跳過”(直接進入主activity)
mViewPager.setAdapter(new GuideAdapter());
寫一個內部類GuideAdapter繼承自PageAdapter,實現四個抽象方法
class GuideAdapter extends PageAdapter {
@Override
public intgetCount() {
returnmView.size();
}
@Override
public booleanisViewFromObject(View view,Object object) {
returnview == object;
}
//增加view
@Override
publicObjectinstantiateItem(ViewGroup container, intposition) {
((ViewPager)container).addView(mView.get(position));
returnmView.get(position);
}
//刪除view
@Override
public voiddestroyItem(ViewGroup container, intposition,Object object) {
((ViewPager)container).removeView(mView.get(position));
}
}
這樣引導頁幾個頁面可以實現左右滑動了,但是對于最后一個頁面出現“進入主頁”按鈕,前面n-1個頁面出現“跳過”按鈕,以及下方的小圓點的顏色,需要通過滑動監聽
gViewPager.addOnPageChangeListener(newViewPager.OnPageChangeListener() {
onPageSelected(int position){
switch(position) {
case0:
setPointImg(true, false, false);//控制下方小圓點的顏色
tv_skip_to_homepage.setVisibility(View.VISIBLE);//跳過 按鈕可見
break;
case1:
setPointImg(false, true, false);
tv_skip_to_homepage.setVisibility(View.VISIBLE);
break;
case2:
setPointImg(false, false, true);
tv_skip_to_homepage.setVisibility(View.GONE);
break;
}
}
然后通過監聽兩個按鈕的點擊狀態,選擇進入合適的頁面