Android高仿微信(一)——如何消除启动时的白屏
2015-10-25 19:18
369 查看
默认情况下,APP启动时会先把屏幕刷成白色,然后才绘制第一个Activity中的View,这两个步骤之间的延迟会造成启动后先看到白屏(时间大概为1秒左右)。时间不长,但是我们也看到,一般的APP时不存在这个现象的,那么这个现象如何消除呢?
从网上得到了一些解决方案,主要的两种方式包括:在AppTheme中将“android:windowBackground”属性设置为背景图片;或者,将"android:windowIsTranslucent"设置为true。
在“高仿微信”这个项目中实验时,为了延长启动图片的时间,添加了一个StartActivity(里面有一个ImageView显示启动图片),启动时启动StartActivity,定时3秒后,跳转到MainActivity。
用第一种方式,由于图片的放大比例不一致,导致白屏与StartActivity切换时背景出现变形。
为了避免上述的缺点,采用第二种方法,问题得到完美解决(真机测试无异)。
1、styles.xml中的设置
2、StartActivity
activity_layout.xml:
注意,这里用了ImageView来显示背景图片,并且设置scaleType属性为"centerCrop",这样得到的效果是最好的。
也可以直接设置RelativeLayout的background属性,但是这样,图片会有点变形,可能是因为图片和真机屏幕的大小不完全匹配。
StartActivity.java:
这里,用了Timer来实现定时的效果。
从网上得到了一些解决方案,主要的两种方式包括:在AppTheme中将“android:windowBackground”属性设置为背景图片;或者,将"android:windowIsTranslucent"设置为true。
在“高仿微信”这个项目中实验时,为了延长启动图片的时间,添加了一个StartActivity(里面有一个ImageView显示启动图片),启动时启动StartActivity,定时3秒后,跳转到MainActivity。
用第一种方式,由于图片的放大比例不一致,导致白屏与StartActivity切换时背景出现变形。
为了避免上述的缺点,采用第二种方法,问题得到完美解决(真机测试无异)。
1、styles.xml中的设置
<!-- Base application theme. --> <style name="AppTheme" parent="android:Theme.Holo.Light.NoActionBar"> <item name="android:windowIsTranslucent">true</item> </style>
2、StartActivity
activity_layout.xml:
注意,这里用了ImageView来显示背景图片,并且设置scaleType属性为"centerCrop",这样得到的效果是最好的。
也可以直接设置RelativeLayout的background属性,但是这样,图片会有点变形,可能是因为图片和真机屏幕的大小不完全匹配。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" tools:context="tina.myweixin2.StartActivity"> <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/appstart" android:scaleType="centerCrop"/> </RelativeLayout>
StartActivity.java:
这里,用了Timer来实现定时的效果。
import android.app.Activity; import android.content.Intent; import android.os.Bundle; import java.util.Timer; import java.util.TimerTask; public class StartActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_start); Timer timer=new Timer(); timer.schedule(new TimerTask() { @Override public void run() { startActivity(new Intent(StartActivity.this,MainActivity.class)); StartActivity.this.finish(); } },1000); } }
相关文章推荐
- 封装一个自适应高度的 textview
- 如何判断微信内置浏览器(JS & PHP
- Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果
- 类似微信TablViewCell效果之第三框架SWTableViewCell
- 一上午搞java编码问题,写了一个将批量文件编码转为UTF-8的小程序(有BUG-.-!)
- PHP微信开发---简单的文本自动回复
- 018.比较数组
- Android 微信授权登录、获取Wx用户信息,解决无法回调问题
- 微信浏览器内建的WeixinJSBridge 实现“返回”操作 WeixinJSBridge.call('closeWindow');
- 微信运动刷步数教程详解
- 微信公众平台开发模式 微信 语音识别 公众平台 消息接口 语音识别
- TurboMail邮件系统新版本V7.0,和微信一起玩!
- 腾讯发布的微信生活白皮书,透露了哪些有意思的数据?
- Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果
- 一个小程序看流的读取
- 仿微信随手指滑动页面菜单图标文字颜色渐变
- 017.输出不规整数组
- 腾讯首次公布微信最全用户数据【完整版】
- 腾讯首次公布微信最全用户数据【完整版】
- android支付之微信支付