在app打开的时候,会先进入到启动图界面。在启动图界面中停留3s(或者直接跳过),而后判断是否已经登陆。进入到登陆页面或者是进入到主页面。html

一 启动图界面

采用帧布局(framelayout),全部控件都在界面左上角,按代码顺序依次覆盖,因此先写背景图(image view),而后写一个倒计时的控件(appcompatTextview)。这样就可使倒计时空间覆盖在背景图上。android

1

3

4 android:layout_width="match_parent"

5 android:layout_height="match_parent">

6

7 //背景图

8

10 android:layout_width="match_parent"

11 android:layout_height="match_parent"

12 android:scaleType="centerCrop"

13 android:background="@mipmap/start_back"/>

14

15 //底部app名

16

18 android:layout_height="60dp"

19 android:layout_gravity="bottom"

20 android:background="@mipmap/start_back_bottom1"/>

21

22 //右上角倒计时图标

23

25 android:layout_height="50dp"

26 android:layout_width="50dp"

27 android:layout_marginTop="15dp"

28 android:layout_gravity="right"

29 android:layout_marginRight="15dp"

30 android:background="@drawable/circle_timer"

31 android:textColor="@android:color/white"

32 android:textSize="16sp"

33 android:gravity="center"/>

34

35

36

倒计时图标要单独写,要实现一个半透明的圆形图标来显示倒计时。app

在main/res/drawable/中建立一个shape文件:circle_timer.xml。在其中写好圆形以及半透明属性。以下:ide

1

2

3

4

在倒计时图标中的background调用这个shape文件就能够实现目标设计。工具

二 使用Timer控制定时关闭启动页面

1.工具准备

在app中建立一个util包,在util包中新建一个timer包来存放相关timer工具。布局

Timer是一种定时器工具,用来在一个后台线程计划执行指定任务。它能够计划执行一个任务一次或反复屡次。post

在timer中包括一个接口和一个基础TimerTask。结构以下:this

TimerTask一个抽象类,它的子类表明一个能够被Timer计划的任务。具体的任务在TimerTask中run接口中实现。spa

经过Timer中的schedule方法启动定时任务。线程

在BaseTimerTask中,在构造方法中传入他的回调,在run接口中实现具体的任务。具体的执行在具体的activity中的实现run中。BaseTimerTask以下:

1 public classBaseTimerTask extends TimerTask {2

3 //构造方法中传入他的回调

4 private ITimerListener mITimerListener = null;5

6 publicBaseTimerTask(ITimerListener timerListener){7 this.mITimerListener =timerListener;8 }9

10 @Override11 public voidrun() {12 if(mITimerListener != null){13 mITimerListener.onTimer();14 }15 }16 }

ITimerListener接口以下:

public interfaceITimerListener {voidonTimer();

}

2.具体实现

在startActivity中,新建一个Time类型mTimer,建立其初始化方法:

private voidinitTimer() {

mTimer= newTimer();

final BaseTimerTask task= new BaseTimerTask(this);//第一个 第二个参数是延时开始,第三个是每隔1000ms(1s)执行一次

mTimer.schedule(task, 0, 1000);

}

在初始化方法中新建一个Timer,而且建立一个time的task,使用mTimer的schedule方法进行执行。具体参数意义见上图注解。

在startActivity中要实现ITimerListener接口,因此要实现接口中的方法onTimer()。在onTimer()方法中就是执行具体的timer任务,在其中就实现一个倒计时具体的逻辑。具体代码以下:

1 //倒计时任务

2 @Override3 public voidonTimer() {4 runOnUiThread(newRunnable() {5 @Override6 public voidrun() {7 if (mTvTimer != null) {8 //使用MessageFormat来作字符串拼接

9 mTvTimer.setText(MessageFormat.format("跳过\n{0}s", mCount));10 mCount--;11 if (mCount < 0) {12 if (mTimer != null) {13 mTimer.cancel();14 mTimer = null;15 checkAccount();16 }17 }18 }19 }20 });21 }

在这个方法中,由于在initTimer中实现了每一秒执行一次run()方法。mTvTimer绑定在试图中的倒计时控件,mCount则是定义好的倒计时时间,这里定为3s,每次执行run()时候对mcount进行减1。

在mTvTimer中使用MessageFormat.format来作字符串拼接,其中内容显示“跳过”和 ’mCount‘s。

若是mCount减到0之后,清空mTimer,而且中止Timer任务。在这时倒计时结束时候也开始执行checkAccout()方法,来进行判断登陆状态相关。

3.绑定控件

由于使用了butterknife第三方库,因此使用butterknife来进行注入绑定。

1 //butterknife绑定倒计时的view和click

2 @BindView(R.id.start_timer)3 AppCompatTextView mTvTimer = null;4

5 @OnClick(R.id.start_timer)6 voidonClickTimerView() {7 if (mTimer != null) {8 mTimer.cancel();9 mTimer = null;10 checkAccount();11 }12 }

如上,将mTvTimer和倒计时控件绑定,而且作一个点击事件,点击便是“取消”。因此执行倒计时结束逻辑。

三 StartActivity具体代码

1 public classStartActivity extends AppCompatActivity implements ITimerListener {2

3 private Timer mTimer = null;4 private int mCount = 3;5 privateImageView bingPicImg;6

7 @Override8 protected voidonCreate(Bundle savedInstanceState) {9 super.onCreate(savedInstanceState);10

11 //隐藏actionBar

12 final ActionBar actionBar =getSupportActionBar();13 if(actionBar!=null){14 actionBar.hide();15 }16

17 setContentView(R.layout.activity_start);18 ButterKnife.bind(this);19 initTimer();20

21 }22

23 //butterknife绑定倒计时的view和click

24 @BindView(R.id.start_timer)25 AppCompatTextView mTvTimer = null;26

27 @OnClick(R.id.start_timer)28 voidonClickTimerView() {29 if (mTimer != null) {30 mTimer.cancel();31 mTimer = null;32 checkAccount();33 }34 }35

36 //判断登陆状态

37 private voidcheckAccount() {38

39 }40

41 private voidinitTimer() {42 mTimer = newTimer();43 final BaseTimerTask task = new BaseTimerTask(this);44 //第一个 第二个参数是延时开始,第三个是每隔1000ms(1s)执行一次

45 mTimer.schedule(task, 0, 1000);46 }47

48

49 //倒计时任务

50 @Override51 public voidonTimer() {52 runOnUiThread(newRunnable() {53 @Override54 public voidrun() {55 if (mTvTimer != null) {56 //使用MessageFormat来作字符串拼接

57 mTvTimer.setText(MessageFormat.format("跳过\n{0}s", mCount));58 mCount--;59 if (mCount < 0) {60 if (mTimer != null) {61 mTimer.cancel();62 mTimer = null;63 checkAccount();64 }65 }66 }67 }68 });69 }70

71 }

二手平台android界面,Android二手书交易app设计(2)启动图Activity相关推荐

  1. Android二手书交易app设计(2)启动图Activity

    在app打开的时候,会先进入到启动图界面.在启动图界面中停留3s(或者直接跳过),然后判断是否已经登录.进入到登录页面或者是进入到主页面. 一 启动图界面 采用帧布局(framelayout),所有控 ...

  2. java web二手书店,基于jsp的二手书交易-JavaEE实现二手书交易 - java项目源码

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的二手书交易, 该项目可用各类java课程设计大作业中, 二手书交易的系统架构分为前后台两部分, 最终实现在线上进行 ...

  3. 基于java+jsp+ssm二手书交易管理系统

    这样一个二手书交易网站为用户提供了一个可以在网上买卖图书的平台,用户可以通过二手书交易管理系统进行注册或登录操作,登录成功后可以查看自己已发布的售书信息或者求购信息.同时,用户可以浏览其他用户发布的售 ...

  4. 二手手机交易平台使用MYSQL的方法_安卓Android校园淘(二手交易)APP设计与实现(MySQL)...

    安卓Android校园淘(二手交易)APP设计与实现(MySQL)(任务书,开题报告,中期检查表,文献综述,外文翻译,毕业论文14000字,程序代码,MySQL数据库) 本项目就是一个基于Androi ...

  5. python+vue+elementui校园二手书交易信息网站django

    实现了首页.个人中心.用户管理.卖家用户管理.图书分类管理.二手图书管理.求购图书管理.求购回复管理.留言反馈.系统管理.订单管理等内容进行管理,本系统具有良好的兼容性和适应性,为用户提供更多的乐校园 ...

  6. [附源码]计算机毕业设计JAVA大学城二手书交易网站

    [附源码]计算机毕业设计JAVA大学城二手书交易网站 项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(In ...

  7. [附源码]java毕业设计大学城二手书交易网站

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  8. jsp+ssm计算机毕业设计大学城二手书交易网站【附源码】

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  9. 基于java二手书论文_java毕业设计_springboot框架的二手书交易管理与实现

    今天介绍一个java毕设题目, 题目内容为springboot框架的二手书交易管理与实现, 是一个采用b/s结构的javaweb项目, 采用java语言编写开发工具eclipse, 项目框架jsp+s ...

最新文章

  1. Windows 7/Windows 8都有上帝模式
  2. web前端——html基础笔记 NO.12{css布局模型(流动,浮动,层模型)}
  3. Oracle 用户、对象权限、系统权限
  4. php 命令行方式运行时 几种传入参数的方式
  5. iPhone6和iPhone6 plus的iOS8设计尺寸参考指南
  6. mysql 部门表_MySQL高级
  7. Linux学习笔记11——文件I/O之二
  8. php td生成excel 斜杠表头_邮件合并功能都不掌握,还怎么成为Excel达人?
  9. JavaSE学习笔记(七)—— 继承final关键字
  10. “21天好习惯”第一期-10
  11. Maven 梳理 - Maven中的dependencyManagement 意义
  12. 【数据库】数据库安全(授权,回收)
  13. rv1126+imx307/335/415公板使用总结
  14. matlab二阶系统曲线,基于matlab的二阶系统的阶跃响应曲线分析
  15. 1口百兆光纤收发器工业导轨式发送机接收机1百兆光1百兆电工业以太网光纤收发器
  16. 关于网页点击按钮无响应问题分析
  17. 计算机维修与数据恢复论文,备份恢复论文,关于计算机数据备份数据恢复技术相关参考文献资料-免费论文范文...
  18. 问题 C: 零基础学C/C++26——判断某整数是否既是5又是7的整数倍
  19. 母婴购物微信商城的设计与实现
  20. xslt简介_XSLT简介

热门文章

  1. Spring Boot进阶:原理、实战与面试题分析
  2. 手机电池校正代码_安卓手机电量怎样校正?电池校正电量方法
  3. B/S文件上传下载解决方案
  4. 不懂就要问!流量卡拒收对个人会有影响吗?
  5. Mybatis错误Illegal overloaded gette
  6. 应用于音箱领域中的音频功放IC型号推荐
  7. excel如何提取图片中的文字?
  8. 图形学 (-)数学基础
  9. 面试必看的注意事项在这里!
  10. 关于数据库账号和密码加密问题