文章目录
启动页
- 启动页
- 1. 启动页网络请求优化
- 2. 启动页面网络请求优化的具体实践
- 3. 启动页面无黑屏
- 4.主题替换
- 5. 启动页面屏蔽返回按键
- 引导页
- 1、延时启动检测
- 2、圆点的绘制
一个很慢的启动页很容易让用户觉得受不了,进而“逃离” App 的,所以若想产品有更好的用户体验,做一些启动页的优化是一个不错的选择。这里我们简单介绍一下我在实践中对启动页是如何优化的。
我们在启动页做了什么?
- 加载 App 中 h5 页面的 url 地址;
- 加载请求用户信息;
- 加载首页地图页面需要展示的图标;
- 延时三秒钟跳转首页面,这时候无论是否加载到前面的网络请求信息,都会跳转到首页面。
timer = new Timer();
timerTask = new TimerTask() {
@Override
public void run() {
if (isGoToComplete) {
L.i("等待2s完成,取消timer任务...");
cancelTimer();
return;
}
if (isLoadStartQueryComplete && isLoadUserInfoComplete) {
// 已经显示过引导图
L.i("StartActivity中网络请求完成,执行跳转逻辑.....");
handler.sendEmptyMessage(eventWhat);
L.i("StartActivity中网络请求完成,取消timer任务...");
cancelTimer();
}
}
};
timer.schedule(timerTask, 0, 100);
3. 启动页面无黑屏
使用透明主题:
true
Activity.onCreate() 之前 App 不做显示,这样用户误以为是手机慢了,这种瞒天过海的方案大家还是不要用了。
@color/colorPrimary
@color/colorPrimaryDark
@color/colorAccent
true
4.主题替换
我们在style中自定义一个样式Lancher,在其中放一张背景图片,或是广告图片之类的。
@drawable/bg
把这个样式设置给启动的 Activity
然后在 Activity 的 onCreate 方法,把 Activity 设置回原来的主题
@Override
protected void onCreate(Bundle savedInstanceState) {
//替换为原来的主题,在onCreate之前调用
setTheme(R.style.AppTheme);
super.onCreate(savedInstanceState);
}
5. 启动页面屏蔽返回按键
一般的我们的 App 中都会在启动页面执行一些网络操作,初始化配置等,所以这时候我们是不希望用户通过按下返回按键退出 App ,因而我们需要在启动页中屏蔽返回按键,这里简单的介绍一下具体的实现:
/**
* startActivity屏蔽物理返回按钮
*
* @param keyCode
* @param event
* @return
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
return true;
}
return super.onKeyDown(keyCode, event);
}
引导页
用 sharedpreference 来检测:
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
boolean isFirst = PreferencesUtils.getBoolean(SplashActivity.this,"isFirst",false);
if (!isFirst) {
readyGo(GuideActivity.class);
PreferencesUtils.putBoolean(SplashActivity.this, "isFirst",true);
}else{
readyGo(MainActivity.class);
}
}
},2000);
2、圆点的绘制
我们完全可以用 shade 属性和 selector 属性帮我们绘制完成。
用 selector 就可以改变不同的颜色:
引导页界面布局文件:
初始化圆点:
private void initPoint() {
//获取layout
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
//设置每一个view即圆点的对左的偏移量
params.setMargins(15,0,0,0);
//根据图片多少来确定个数
for (int i = 0; i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?