一般应用程序第一次进入会进入引导页,显示一些广告;之后再次进入会进入闪屏页面,显示一些广告,公司、个人的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;
}
}
然后通过监听两个按钮的点击状态,选择进入合适的页面
网友评论