eoe源码解读之旅-----结束程序

本文介绍了一种通过连续点击返回键两次来触发应用程序退出的方法,并详细解释了如何使用动画增强用户体验的过程。此外,还探讨了其他退出效果的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、程序思想

eoe的开始用了一个动画,eoe的结束同样用了一个动画,在主界面上重写onKeyDown方法监听返回键,在3秒内点击了两次返回键就播放一个动画,当动画播放完成就Finish当前的Activity退出程序。

2、两次点击退出实现

当触发退出事件是,主界面先被一个FramLayout充满把主界面的内容全部覆盖掉,然后播放关闭动画。

/**
	 * 连续按两次返回键就退出
	 */
	private int keyBackClickCount=0;//记录次数
	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		// TODO Auto-generated method stub

		if (keyCode == KeyEvent.KEYCODE_BACK) {
			switch (keyBackClickCount++) {
				case 0:
					Toast.makeText(this,
							getResources().getString(R.string.press_again_exit),
							Toast.LENGTH_SHORT).show();//提示在点一次退出
					Timer timer = new Timer();//开一个定时器,三秒过后把计数器重置为0
					timer.schedule(new TimerTask() {
						@Override
						public void run() {
							keyBackClickCount=0;
						}
					}, 3000);
					break;
				case 1:
					mFrameTv.setVisibility(0);    //动画宿主设置可见,跟setVisibility(View.VISIABLE)一样,一个FramLayout布局里面带俩个Imageview,都是充满屏幕大小,一个白色Imageview,一个黑色Imageview.
					mImgTv.setVisibility(0);
					Animation anim = AnimationUtils.loadAnimation(
							MainActivity.this, R.anim.tv_off);
					anim.setAnimationListener(new tvOffAnimListener());//设置播放完成退出
					mImgTv.startAnimation(anim);//开始播放动画
					break;
				default:
					break;
			}
			return true;
		} 
		return super.onKeyDown(keyCode, event);
	}
3、动画解读

大部分可以看上一讲的内容就可以看懂以下完成神马效果

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false"
    android:zAdjustment="top" >

    <scale
        android:duration="200"
        android:fillEnabled="true"      //播放完是否保持完成状态
        android:fromXScale="1.0"
        android:fromYScale="1.0"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:pivotX="50.0%"
        android:pivotY="50.0%"
        android:toXScale="1.0"
        android:toYScale="0.0030" />
    <scale
        android:duration="200"
        android:fillEnabled="true"
        android:fromXScale="1.0"
        android:fromYScale="1.0"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:pivotX="50.0%"
        android:pivotY="50.0%"
        android:startOffset="200"
        android:toXScale="0.0"
        android:toYScale="0.3" />

    <alpha
        android:duration="400"
        android:fillAfter="true"
        android:fillEnabled="true"
        android:fromAlpha="1.0"
        android:interpolator="@interpolator/accelerate_quint"
        android:toAlpha="0.0" />

</set>


这种效果让我想起的关电视机的效果,先重Y轴上两边变小,然后再重X轴上两边变小,这个过程还加上渐变重1.0到0.0消失不见。
4、其他退出效果拓展


这个也是比较多的退出界面,弹出一个AlertDialog

我们也来写一个

new AlertDialog.Builder(getActivity()).setTitle("退出程序").setMessage("确定退出当前程序吗?").setNegativeButton("确定", new DialogInterface.OnClickListener() {
				@Override
				public void onClick(DialogInterface dialog, int which) {
					finish();
				}
			}).setPositiveButton("取消", null).show();
当然没有上面那个这么漂亮,以为这段没有加上各种效果,如果想做成那个效果也可以,把apk的资源导出来后自定义Dialog加上效果就OK了。

不懂的可以关注我以后发的一些高仿贴

eoe 客户端,注释详细,代码经典,具有一定的参考价值 以eclipse为例 启动Eclipse,导入Android客户端项目,请确保你当前的Android SDK是最新版。 如果编译出错,请修改项目根目录下的 project.properties 文件。 推荐使用Android 4.0 以上版本的SDK: target=android-14 一、工程目录结构 根目录 ├ source ├ LICENCE.txt ├ README.md 目录简要解释 根目录 ├ source --源代码 ├ LICENCE.txt --协议 ├ README.md --项目帮助及项目信息 二、源代码目录结构 source ├ src ├ libs ├ res ├ AndroidManifest.xml ├ proguard-project.txt └ project.properties 1、src目录 src目录用于存放工程的包及java源码文件。 下面是src目录的子目录: src ├ cn.eoe.app --存放程序全局性类的包 ├ cn.eoe.app.adapter --存放适配器的实现类的包 ├ cn.eoe.app.adapter.base --存放适配器基类的包 ├ cn.eoe.app.biz --存放DAO类的包 ├ cn.eoe.app.config --存放常量,配置和api接口等类的包 ├ cn.eoe.app.db --关于sqlite操作相关的类的包 ├ cn.eoe.app.db.biz --详细的增删改查类的包,暂时仅有一个类 ├ cn.eoe.app.entity --实体类包 ├ cn.eoe.app.entity.base --实体类基类包 ├ cn.eoe.app.https --网络访问相关类的包 ├ cn.eoe.app.indicator --导航相关的类包 ├ cn.eoe.app.slidingmenu --滑动菜单相关类包 ├ cn.eoe.app.ui --界面相关的包,activity的类 ├ cn.eoe.app.ui.base --activity相关的基类包 ├ cn.eoe.app.utils --工具类包 ├ cn.eoe.app.view --Fragment相关类的包 ├ cn.eoe.app.widget --自定义view组件包 2、libs目录 libs目录用于存放项目引用的第三方jar包。 libs目录里的jar包文件: libs |- android-support-v4.jar --v4兼容包 |jackson-all-1.9.2.jar --解析json的包 |umeng_sdk.jar --友盟的sdk 3、res目录 res目录存放工程用到的图片、布局、样式等资源文件。 res目录的子目录: res ├ anim ├ color ├ drawable ├ drawable-hdpi ├ drawable-ldpi ├ drawable-mdpi ├ drawable-xhdpi ├ interpolator ├ layout ├ menu ├ raw ├ values └ values-zh 4、AndroidManifest.xml AndroidManifest.xml用于设置应用程序的版本、主题、用户权限及注册Activity等组件及其他配置。 三、程序功能流程 1、APP启动流程 AndroidManifest.xml注册的启动Activity是"cn.eoe.app.ui.SplashActivity",然后进入到主界面,对应的 Activity是“cn.eoe.app.ui.MainActivity” 2.程序功能 (1)社区精选 (2)新闻资讯 (3)学习教程 (4)社区博客
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值