Android Splash界面支持用户点击 直接进入主界面
转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/23613403
现在大部分APP都有Splash界面,下面列一下Splash页面的几个作用:
1、展示logo,提高公司形象
2、初始化数据 (拷贝数据到SD)
3、提高用户体验
4、连接服务器是否有新的版本等。
不过如果Splash页面不做任何操作时,我更喜欢提供个用户点击Splash界面直接进入主界面。
一般我们的SplashActivity会这么写:
package com.example.testsplashdemo; import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.MotionEvent; public class SplashActivity extends Activity
{
private Handler handler = new Handler(); @Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); handler.postDelayed(new Runnable()
{
@Override
public void run()
{
Intent intent = new Intent(SplashActivity.this, MainActivity.class);
startActivity(intent);
}
}, 3000);
} }
现在我们添加个用户触摸屏幕直接进入主界面:
@Override
public boolean onTouchEvent(MotionEvent event)
{ if(event.getAction()==MotionEvent.ACTION_UP)
{
Intent intent = new Intent(SplashActivity.this, MainActivity.class);
startActivity(intent);
finish();
} return super.onTouchEvent(event);
}
然后测试,会发现用户如果直接触摸进入,当3秒后还是会再进入一次主界面。
于是我们改写代码为:
package com.example.testsplashdemo; import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.MotionEvent; public class SplashActivity extends Activity
{
private Handler handler = new Handler();
private Runnable runnable; @Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); handler.postDelayed(runnable = new Runnable()
{
@Override
public void run()
{
Intent intent = new Intent(SplashActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
}, 3000);
} @Override
public boolean onTouchEvent(MotionEvent event)
{ if(event.getAction()==MotionEvent.ACTION_UP)
{
Intent intent = new Intent(SplashActivity.this, MainActivity.class);
startActivity(intent);
finish();
if (runnable != null)
handler.removeCallbacks(runnable);
} return super.onTouchEvent(event);
} }
定义了个Runnable对象,用户点击后移除回调事件,解决了。
利用handler.postDelay和removeCallback还可以判断用户是否长按操作等。
可能有些哥们会问,我一般是通过发送消息进入主界面的,有什么好的处理方案吗?
由于原理类似,我就直接贴代码了:
package com.example.testsplashdemo; import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.MotionEvent; public class SplashActivity extends Activity
{
private Handler handler = new Handler()
{
public void handleMessage(android.os.Message msg)
{
Intent intent = new Intent(SplashActivity.this, MainActivity.class);
startActivity(intent);
finish(); handler.removeMessages(-1);
}; };
private Runnable runnable; @Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); handler.sendMessageDelayed(handler.obtainMessage(-1), 3000);
} @Override
public boolean onTouchEvent(MotionEvent event)
{ if (event.getAction() == MotionEvent.ACTION_UP)
{
handler.sendMessage(handler.obtainMessage(-1));
finish();
} return super.onTouchEvent(event);
} }
也可以解决。
这里最后顺便介绍一种比较另类的处理方式:
private Handler handler = new Handler()
{
public void handleMessage(android.os.Message msg)
{
Intent intent = new Intent(SplashActivity.this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
finish(); }; };
其余代码和上面的代码一样,就去掉了移除消息的部分,添加了一个Intent的flag。当仅有这两个Activity时是没有问题的,感觉也可以。但是要明白FLAG_ACTIVITY_SINGLE_TOP的含义是,当此Activity存在且位于栈顶时复用,也就是说,3秒内用户进入别的Activity了,依然会发生重新进入的现象。
Android Splash界面支持用户点击 直接进入主界面的更多相关文章
- MATLAB R2017a 进入主界面以后一直处于初始化状态的解决办法
自从前几天更新了win10系统,结果发现matlab不能用了,进入主界面一直初始化,没完没了. 网上说可能是许可证等问题,但经过尝试发现仍然无法解决问题. 仔细一想,发现win10系统的防火墙默默把它 ...
- SourceTree 03 - 跳过账号登录直接进入主界面
SourceTree系列第1篇 SourceTree 01 - git 客户端介绍(http://www.cnblogs.com/geaosu/p/8807666.html) SourceTree系列 ...
- Android开发——后台获取用户点击位置坐标(可获取用户支付宝密码)
1. getevent命令 我们首先是根据adb shell getevent命令获取到被点击位置的信息. 这里要说明的是,不同的手机手机获得的点击输出是不一样的.以我的真机为例,输出如下 本文原创, ...
- android 代码实现模拟用户点击、滑动等操作
/** * 模拟用户点击 * * @param view 要触发操作的view * @param x 相对于要操作view的左上角x轴偏移量 * @param y 相对于要操作view的左上角y轴偏移 ...
- ViewPager实现引导页(添加导航点,判断是否第一次进入主界面)
1.引导页的4个界面布局,里面加载一张背景图片 插入到guide的界面布局中(这里不用fragment) guide_background_fragment1.xml <?xml version ...
- ViewPager滑动到最后一页再向左滑动进入主界面
在OnPageChangeListener中的onPageScrolled方法里判断 @Override public void onPageScrolled(int arg0, float arg1 ...
- Android应用--新浪微博客户端新特性滚动视图和启动界面实现
新浪微博客户端新特性滚动视图和启动界面实现 2013年8月20日新浪微博客户端开发之启动界面实现 前言: 使用过新浪微博客户端的童鞋都清楚,客户端每一次升级之后第一次启动界面就会有新特性的介绍,用户通 ...
- android 点击重新加载界面设计
在项目中经常会遇到这样的场合,用户点击了一个界面后要提示等待加载,最后有可能显示加载失败,点击屏幕再重试加载.下面是该实例的代码: layout: loading.xml <?xml versi ...
- Android studio 开发一个用户登录界面
Android studio 开发一个用户登录界面 activity_main.xml <?xml version="1.0" encoding="utf-8&qu ...
随机推荐
- MQ、JMS以及ActiveMQ
MQ简介: MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们.消息传 ...
- 【Cocos2d-X开发笔记】第一期 Cocos2d-X的环境搭建
作者今天开始正式开始学习Cocos2d-X引擎进行游戏编程,预计两天会更新一期,最后实现ios游戏的appsore上线. (部分内容转载自:http://blog.csdn.net/yan ...
- Eclipse乱码怎么办
Eclipse里设置编码有三个层次:全局.工程.文件. 文件的编码会覆盖工程的编码,工程的编码会覆盖全局的编码. 我猜测:虽然你的工程编码更改为GBK,但只对新建文件有效. 如果工程中旧有的文件是UT ...
- Matlab图像彩色转灰色
Matlab图像彩色转灰色 时间:2014年5月7日星期三 网上找的程序.实现图像彩色转灰色: I1=imread('C:\Users\Yano\Desktop\matlab\test1\4.jpg' ...
- acdream 1222 Quantization Problem [dp]
称号:acdream 1222 Quantization Problem 题意:给出一个序列 a ,然后给出一个 n * m 的矩阵,让你从这个矩阵中选出一个序列k,使得sum(abs(ki - ai ...
- vim在编译器 . 命令(点命令)
时间:2014.06.28 地点:基地 -------------------------------------------------------------------------------- ...
- hdu3038(并查集)
题目链接 题意:有n次询问,给出a到b区间的总和,问这n次给出的总和中有几次是和前面已近给出的是矛盾的 分析:sum数组维护着到根节点的距离(即区间和),每次合并x,y,s(a,b分别为x,y的根节点 ...
- 阿尔贝我给我加i觉
http://www.huihui.cn/share/8192186 http://www.huihui.cn/share/8192178 http://www.huihui. ...
- 安装ArcGIS License 10.1 许可管理器 破解版 服务启动又失败的解决办法
安装破解文件的提示执行 替换许可管理器Bin下面的service.txt 文件,之后会发现,许可管理器启动不了(有时候又可以,挺郁闷), 经过多次的试验,我找到了一种折中解决的方法,供大家参考 解决 ...
- 9patch(.9)怎么去掉自己画上的黑点/黑线
在自己制作.9.png图片的时候,制作之后所制作的图片上面会显示出制作的痕迹,也即是图片区域上会显示小黑点和黑线.那么为了真正的利用.9.png图片的使用效果.这些瑕疵当然是不能出现的了.因此,要想办 ...