Android启动页
来源:互联网 发布:数据挖掘工具weka教程 编辑:程序博客网 时间:2024/05/18 03:51
一、为什么要用启动页
1、宣传产品
2、预先加载一些耗时的数据,减轻用户等待程序启动的枯燥味
3、对系统进行检测,如是否有网,电量是否充足等等
二、如何做一个启动页
1、以图片作为启动页
(1)很多时候往往是以一张图片作为启动页,在这张图片上写上产品标志,产品名称、产品主要特色、产品的版本信息、公司信息等等这些有关产品宣传的东西等等。
(2)然后对图片做一些动画效果,比如淡入淡出、放大缩小等等。
(3)在对图片做效果的的同时,去预加载一些耗时的数据或对数据库进行升级
2、下面是代码的具体实现
(1)准备一张图片
(2)布局文件loading_activity.xml:在背景图片上放一个遮罩层,代码如下:
```<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/loading" android:orientation="vertical" > <!-- 这里的ImageView相当于一个遮罩层 --> <ImageView android:id="@+id/loading_img" android:layout_width="match_parent" android:layout_height="fill_parent" android:src="#ff000000" /></LinearLayout>
(3)动态代码LoadingActivity.java如下:
package com.example.loading;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Calendar;import java.util.Date;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.widget.ImageView;/** * 启动页:背景图片由暗变清晰 * */public class LoadingActivity extends Activity { // 图片控件,相当于一个遮罩层,这里是ImageView.其src为黑色 private ImageView mImageView; //alpha为255时完全不同明,为0时完全同门 int image_alpha = 255; //日期格式 private static SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); // 线程管理类 Handler mHandler = new Handler() { public void handleMessage(android.os.Message msg) { super.handleMessage(msg); //刷新遮罩层的透明度 mImageView.setAlpha(image_alpha); mImageView.invalidate(); }; }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //加载布局文件 setContentView(R.layout.loading_activity); //找到遮罩层 mImageView = (ImageView) findViewById(R.id.loading_img); // 启动一个子线程去预加载数据 new Thread(new Runnable() { @Override public void run() { //开始时间 long startTime = System.currentTimeMillis(); /** * 获取当前日期所在的三个月内的日期字符串 */ //日期集合 List<String> dateStrList = new ArrayList<String>(); //系统自带的日历类 Calendar cal = Calendar.getInstance(); //"天"设置为1号 cal.set(Calendar.DAY_OF_MONTH, 1); //"小时"设置为0 cal.set(Calendar.HOUR_OF_DAY, 0); //"分"设置为0 cal.set(Calendar.MINUTE, 0); //"秒"设置为0 cal.set(Calendar.MILLISECOND, 0); /** * 前一个月第一天日期 */ //减掉一个月 cal.add(Calendar.MONTH, -1); //前一个月第一天的日期 Date prevDate = cal.getTime(); /** * 后一个月最后一天 */ //加两个月 cal.add(Calendar.MONTH, 2); //最后一天 cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH)); //后一个月最后一天日期 Date nextDate = cal.getTime(); /** * 恢复为前一个月第一天 */ //第一天 cal.set(Calendar.DAY_OF_MONTH, 1); //减两个月 cal.add(Calendar.MONTH, -2); //计算“前一个月第一天”和“后一个月最后一天”相差的天数 int days = daysBetween(prevDate, nextDate); //alpha的平均值 int averageAlpha = 255/days; //临时日期 Date tmpDate = cal.getTime(); do { try { Thread.sleep(20);//为了能看到渐变的效果,睡眠20毫秒,让时间长一点 } catch (InterruptedException e) { e.printStackTrace(); } String dateStr = dateToString(tmpDate); //把单个日期放入集合中 dateStrList.add(dateStr); //更新alpha的值 updateAlpha(averageAlpha); //增加一天 cal.add(Calendar.DAY_OF_MONTH, 1); tmpDate = cal.getTime(); } while (!tmpDate.after(nextDate));//临时日期不大于“后一个月最后一天” //结束时间 long endTime = System.currentTimeMillis(); //相距时间 long times = endTime - startTime; } }).start(); } /** * 刷新alpha值 */ public void updateAlpha(int averageAlpha) { if (image_alpha >= 0) { image_alpha -= averageAlpha; } else { image_alpha = 0; } mHandler.sendMessage(mHandler.obtainMessage()); } /** * 计算两个日期之间相差的天数 * @param smdate 较小的时间 * @param bdate 较大的时间 * @return 相差天数 * @throws ParseException */ public static int daysBetween(Date smdate,Date bdate) { try { smdate=sdf.parse(sdf.format(smdate)); bdate=sdf.parse(sdf.format(bdate)); } catch (Exception e) { } Calendar cal = Calendar.getInstance(); cal.setTime(smdate); long time1 = cal.getTimeInMillis(); cal.setTime(bdate); long time2 = cal.getTimeInMillis(); long between_days=(time2-time1)/(1000*3600*24); return Integer.parseInt(String.valueOf(between_days)); } /** * 日期转换为字符串 */ private String dateToString(Date date){ String dateStr = sdf.format(date); return dateStr; }}
(4)示例代码
启动页.zip
0 0
- android 启动页 实现
- android启动页
- Android启动页
- android启动页制作
- Android启动页解决方案
- Android启动页解决方案
- Android设置启动页
- Android启动页广告
- android 启动页、引导页
- Android启动页+引导页
- Android启动页SplashScreen实现
- Android 开发(启动页)
- Android动态加载启动页
- Android 启动页,倒计时 view
- Android app启动页广告
- Android之启动页优化
- Android启动页黑屏问题解决
- android 启动
- [clone]Java中的深拷贝和浅拷贝 实例解析
- 砝码称重
- 汽水瓶
- eclipse:No resource found that matches the given name 'Theme.AppCompat.Light'
- 8天学通MongoDB——索引操作(转)
- Android启动页
- 将tomcat添加到服务中
- 钱币兑换问题
- CBLAS的安装与使用
- Spring4.x整合Quartz2.x动态修改定时器时间(修正多定时器SpringBean异常)
- scala学习之:List的map、flatMap、foreach、filter的操作代码实战
- 队列的实现
- C语言基础学习——第1天(类型+操作符)
- webbrowser加载地图网页出现脚本错误解决