一般應(yīng)用程序第一次進(jìn)入會進(jìn)入引導(dǎo)頁,顯示一些廣告箩退;之后再次進(jìn)入會進(jìn)入閃屏頁面离熏,顯示一些廣告,公司戴涝、個(gè)人的logo滋戳,同時(shí)進(jìn)行數(shù)據(jù)的初始化、字體的自定義喊括,然后直接進(jìn)入首頁頁面
isFirst = SASharedPreference.getBoolean(this, "is_first", true);//第一次為空胧瓜,賦值為true
if (isFirst) {
進(jìn)入引導(dǎo)頁;
SASharedPreference.putBoolean(this, "is_first", false);順便修改isFirst值為false
else {
進(jìn)入主頁;
}
自定義主題
在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>
//設(shè)置字體的封裝 在main文件夾新建目錄assets-fonts-(具體字體文件名.ttf)
在靜態(tài)工具類封裝一個(gè)方法setFont
public static void setFont(Context context,TextView textView) {
Typeface typeface = Typeface.createFromAsset(context.getAssets(),"fonts/RobotoCondensed-BoldItalic.ttf");
textView.setTypeface(typeface);
}
在主Activity調(diào)用UtilTools.setFont(tv_showPage);//tv_showPage是TextView對象
打開app進(jìn)入閃屏頁(等待2秒)郑什,若是第一次就進(jìn)入引導(dǎo)頁面府喳,若不是第一次就進(jìn)入主頁
private Handler? handler = new Handler() {
void handMessage(Message msg) {
? switch(msg.what) {
case TAG://收到信息
if (isFirst) {//進(jìn)入引導(dǎo)頁
}else {//進(jìn)入主頁
}
break;
}
}
};
initView () {
handler.sendEmptyMessageDelayed(TAG,2000);//延遲2000ms發(fā)送消息
}
引導(dǎo)頁
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文件包含一個(gè)ViewPager和對應(yīng)的共同布局(圖片加文字)以及一個(gè)右上角的“跳過”(直接進(jìn)入主activity)
mViewPager.setAdapter(new GuideAdapter());
寫一個(gè)內(nèi)部類GuideAdapter繼承自PageAdapter,實(shí)現(xiàn)四個(gè)抽象方法
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));
}
}
這樣引導(dǎo)頁幾個(gè)頁面可以實(shí)現(xiàn)左右滑動了,但是對于最后一個(gè)頁面出現(xiàn)“進(jìn)入主頁”按鈕蘑拯,前面n-1個(gè)頁面出現(xiàn)“跳過”按鈕钝满,以及下方的小圓點(diǎn)的顏色兜粘,需要通過滑動監(jiān)聽
gViewPager.addOnPageChangeListener(newViewPager.OnPageChangeListener() {
onPageSelected(int position){
switch(position) {
case0:
setPointImg(true, false, false);//控制下方小圓點(diǎn)的顏色
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;
}
}
然后通過監(jiān)聽兩個(gè)按鈕的點(diǎn)擊狀態(tài),選擇進(jìn)入合適的頁面