android摇一摇实现(仿微信)
这个demo模仿的是微信的摇一摇,是一个完整的demo,下载地址在最下面.下面是demo截图:

步驟:
1.手机摇动监听,首先要实现传感器接口SensorEventListener.
/**开始重力传感器的检测*/
public void start() {
// 获得传感器管理器
SensorManager sensorManager = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE);
if (sensorManager != null) {
// 获得重力传感器
sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
}
// 注册
if (sensor != null) {
sensorManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_GAME);
}
}
2.启动手掌开合动画,这个手掌其实是上下两部分组成的,分别开启一个上下垂直动画.
/** 摇一摇手掌上部分动画 */
public AnimationSet getUpAnim(Handler handler) {
AnimationSet animup = new AnimationSet(true);
TranslateAnimation mytranslateanimup0 = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF,
-0.8f);
mytranslateanimup0.setDuration(OPEN_TIME);
mytranslateanimup0.setAnimationListener(getLineVisibleListener(handler)); TranslateAnimation mytranslateanimup1 = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF,
+0.8f);
mytranslateanimup1.setDuration(CLOSE_TIME);
mytranslateanimup1.setStartOffset(OFFSET_TIME);
mytranslateanimup1.setInterpolator(new AccelerateInterpolator(1));
mytranslateanimup1.setAnimationListener(getLineGoneListener(handler)); animup.addAnimation(mytranslateanimup0);
animup.addAnimation(mytranslateanimup1);
return animup;
} /** 摇一摇手掌下部分动画 */
public AnimationSet getDownAnim() {
AnimationSet animdn = new AnimationSet(true);
TranslateAnimation mytranslateanimdn0 = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF,
+0.8f);
mytranslateanimdn0.setDuration(OPEN_TIME);
TranslateAnimation mytranslateanimdn1 = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF,
-0.8f);
mytranslateanimdn1.setDuration(CLOSE_TIME);
mytranslateanimdn1.setStartOffset(OFFSET_TIME);
mytranslateanimdn1.setInterpolator(new AccelerateInterpolator(1));
animdn.addAnimation(mytranslateanimdn0);
animdn.addAnimation(mytranslateanimdn1);
return animdn;
}
3.结果页动画,重新摇一摇时,也会启动一个动画将结果页移动到最下方然后消失.就跟微信摇到了人以后,弹出的个人信息卡一样.
demo下载地址:http://files.cnblogs.com/files/wangyuehome/Shake.zip
android摇一摇实现(仿微信)的更多相关文章
- Android开发之使用GridView+仿微信图片上传功能(附源代码)
前言:如果转载文章请声明转载自:https://i.cnblogs.com/EditPosts.aspx?postid=7419021 .另外针对有些网站转载本人的文章结果源码链接不对的问题,本人在 ...
- Android控件-ViewPager(仿微信引导界面)
什么是ViewPager? ViewPager是安卓3.0之后提供的新特性,继承自ViewGroup,专门用以实现左右滑动切换View的效果. 如果想向下兼容就必须要android-support-v ...
- Android笔记(六十九) 仿微信界面(一)
综合之前的Fragment和自定义组件的知识,实现微信界面 MainActivity.java package cn.lixyz.test; import android.app.Acti ...
- Android 联系人字母排序(仿微信)
现在很多APP只要涉及到联系人的界面,几乎都会采取字母排序以及导航的方式.作为程序猿,这种已经普及的需求还是需要学习的,于是小生开始了在网上默默的学习之路,网上学习的资料质量参差不齐,不过也有很不错的 ...
- android新闻App源码、仿微信源码、地图音乐源码等
Android精选源码 一款实用的休闲类App,新闻视频和技术应有尽有. android实现交互式K线图表源码 android新闻客户端和服务器源码 android MatetialDesign设计 ...
- Android仿iPhone晃动撤销输入功能(微信摇一摇功能)
重力传感器微信摇一摇SensorMannager自定义alertdialogSensorEventListener 很多程序中我们可能会输入长文本内容,比如短信,写便笺等,如果想一次性撤销所有的键入内 ...
- 玩转Android之加速度传感器的使用,模仿微信摇一摇
Android系统带的传感器有很多种,最常见的莫过于微信的摇一摇了,那么今天我们就来看看Anroid中传感器的使用,做一个类似于微信摇一摇的效果. OK ,废话不多说,我们就先来看看效果图吧: 当我摇 ...
- js html5 仿微信摇一摇
看微信摇一摇之后忽然想知道他是怎么写的.于是就在网上查了一些资料,有些是借鉴别人的.大家共同学习啊 先放代码 <body onload="init()"> <p& ...
- iOS-高仿微信摇一摇动画效果加震动音效
概述 摇一摇动画效果 (加震动音效) 详细 代码下载:http://www.demodashi.com/demo/10707.html 众所周知, 微信中的摇一摇功能: 搜索人/歌曲/电视,同样在一些 ...
随机推荐
- Codeforces Round #380 (Div. 1, Rated, Based on Technocup 2017 - Elimination Round 2)
http://codeforces.com/contest/737 A: 题目大意: 有n辆车,每辆车有一个价钱ci和油箱容量vi.在x轴上,起点为0,终点为s,中途有k个加油站,坐标分别是pi,到每 ...
- uva 1339 Ancient Cipher
大意:读入两个字符串(都是大写字母),字符串中字母的顺序可以随便排列.现在希望有一种字母到字母的一一映射,从而使得一个字符串可以转换成另一个字符串(字母可以随便排列)有,输出YES:否,输出NO:ex ...
- python文本过滤
#encoding:UTF-8 import re temp = "想做/ 兼_职/学生_/ 的 .加,我Q: 8 8. 8 8. !!?? 8 8 .8. 8. 8 有,惊,喜,哦&quo ...
- curl get
//Get方式实现 //初始化 $ch = curl_init(); //设置选项,包括URL curl_setopt($ch, CURLOPT_URL, "http://www.jb51. ...
- 不安装HALCON下安装运行版U盘加密狗驱动
参考halcon安装指导书 Installation Guide Depending on your operating system, you can install, configure, and ...
- js报错:email() is not a function
email() is not a function 明明是一个函数,但火狐控制台真J.. 由于JSP文件是别人写好直接使用的,所以,来回测试,折腾!最后,没办法,一段一段代码删除测试,才发现.有for ...
- java通用的方法整理
判断字符串是否为空 public static boolean IsEmpty(String str){ if (str == null){ return true; } if ("&quo ...
- ldap日志
要开启openldap的日志功能是非常简单的:1.在slapd.conf中加一行:loglevel 4095 2.在/etc/rsyslog.conf 中加入ldap日志文档: ...
- maven的使用体验
由于之前是从C++代码阵营中转到java阵营的(这里可能还会转到scala阵营中).在写工程代码的时候,如果是只是简单的创建java project的话,当然也是可以的.但是,随着项目慢慢扩大,组件越 ...
- Linux安装FTP服务
转自:http://blog.csdn.net/huangbiao86/article/details/6641952 ftp服务器 1. 在Linux和其他机器之间共享文件(在linux下安装ft ...