- 浏览: 124253 次
- 性别:
- 来自: 福州
文章分类
最新评论
-
JavaEEdyc:
http://m.qianka.com/shoutu?u=21 ...
关于anroid设置webview背景方法探讨 -
JavaEEdyc:
http://m.qianka.com/shoutu?u=21 ...
android中的webview 加载html,并可以实现java调用js -
JavaEEdyc:
http://m.qianka.com/shoutu?u=21 ...
android ScrollView 与listView共存冲突问题解决方法(附图) -
zhangyang5023637:
讲的挺明白的。
android中的webview 加载html,并可以实现java调用js -
JavaEEdyc:
android中的webview 加载html,并可以实现ja ...
关于anroid设置webview背景方法探讨
直接看代码
1:配置文件activity_main.xml
java代码
重写摇一摇监听事件:
最后资源文件在附件代码中会给出。效果图
1:配置文件activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#111" android:orientation="vertical" > <ImageView android:id="@+id/shakeBg" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:contentDescription="@null" android:src="@drawable/shakehideimg_man" /> <LinearLayout android:id="@+id/shake_content" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_centerInParent="true" android:gravity="center" android:orientation="vertical" > <RelativeLayout android:id="@+id/shakeImgUp" android:layout_width="fill_parent" android:layout_height="140dip" android:background="#111" android:visibility="visible" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:contentDescription="@null" android:src="@drawable/shake_logo_up" /> </RelativeLayout> <RelativeLayout android:id="@+id/shakeImgDown" android:layout_width="fill_parent" android:layout_height="140dip" android:background="#111" android:visibility="visible" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:contentDescription="@null" android:src="@drawable/shake_logo_down" /> </RelativeLayout> </LinearLayout> </RelativeLayout>
java代码
package com.yancheng.shack; import java.io.IOException; import java.util.HashMap; import android.app.Activity; import android.media.AudioManager; import android.media.SoundPool; import android.os.Bundle; import android.os.Vibrator; import android.view.animation.Animation; import android.view.animation.Animation.AnimationListener; import android.view.animation.AnimationSet; import android.view.animation.TranslateAnimation; import android.widget.RelativeLayout; import android.widget.Toast; import com.yancheng.shack.ShakeListener.OnShakeListener; public class MainActivity extends Activity { private final int DURATION_TIME = 600; private ShakeListener mShakeListener = null; private Vibrator mVibrator; private RelativeLayout mImgUp; private RelativeLayout mImgDn; private SoundPool sndPool; private HashMap<Integer, Integer> soundPoolMap = new HashMap<Integer, Integer>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); mVibrator = (Vibrator) getApplication().getSystemService( VIBRATOR_SERVICE); // 检查设备是否有震动装置 // mVibrator.hasVibrator(); loadSound(); mShakeListener = new ShakeListener(this); // 监听到手机摇动 mShakeListener.setOnShakeListener(new OnShakeListener() { public void onShake() { startAnim(); } }); } /**** * 初始化控件 */ private void initView() { // TODO Auto-generated method stub mImgUp = (RelativeLayout) findViewById(R.id.shakeImgUp); mImgDn = (RelativeLayout) findViewById(R.id.shakeImgDown); } /**** * 获取音效 */ private void loadSound() { sndPool = new SoundPool(2, AudioManager.STREAM_SYSTEM, 5); new Thread() { public void run() { try { soundPoolMap.put( 0, sndPool.load( getAssets().openFd( "sound/shake_sound_male.mp3"), 1)); soundPoolMap.put(1, sndPool.load( getAssets().openFd("sound/shake_match.mp3"), 1)); } catch (IOException e) { e.printStackTrace(); } } }.start(); } /**** * 开启动画 */ public void startAnim() { 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.5f); mytranslateanimup0.setDuration(DURATION_TIME); TranslateAnimation mytranslateanimup1 = new TranslateAnimation( Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, +0.5f); mytranslateanimup1.setDuration(DURATION_TIME); mytranslateanimup1.setStartOffset(DURATION_TIME); animup.addAnimation(mytranslateanimup0); animup.addAnimation(mytranslateanimup1); mImgUp.startAnimation(animup); 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.5f); mytranslateanimdn0.setDuration(DURATION_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.5f); mytranslateanimdn1.setDuration(DURATION_TIME); mytranslateanimdn1.setStartOffset(DURATION_TIME); animdn.addAnimation(mytranslateanimdn0); animdn.addAnimation(mytranslateanimdn1); mImgDn.startAnimation(animdn); // 动画监听,开始时显示加载状态, mytranslateanimdn0.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation animation) { mShakeListener.stop(); sndPool.play(soundPoolMap.get(0), (float) 0.2, (float) 0.2, 0, 0, (float) 0.6); } @Override public void onAnimationRepeat(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { Toast.makeText(getBaseContext(), "摇一摇结束", Toast.LENGTH_SHORT) .show(); mShakeListener.start(); } }); } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); if (mShakeListener != null) { mShakeListener.stop(); } } }
重写摇一摇监听事件:
package com.yancheng.shack; import android.content.Context; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; /** * 摇一摇监听事件 * @created 2014-08-19 * @author * */ public class ShakeListener implements SensorEventListener { private static final int SPEED_SHRESHOLD = 4500;//这个值越大需要越大的力气来摇晃手机 private static final int UPTATE_INTERVAL_TIME = 50; private SensorManager sensorManager; private Sensor sensor; private OnShakeListener onShakeListener; private Context mContext; private float lastX; private float lastY; private float lastZ; private long lastUpdateTime; public ShakeListener(Context c) { mContext = c; start(); } public void start() { 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); } } public void stop() { sensorManager.unregisterListener(this); } public void setOnShakeListener(OnShakeListener listener) { onShakeListener = listener; } public void onSensorChanged(SensorEvent event) { long currentUpdateTime = System.currentTimeMillis(); long timeInterval = currentUpdateTime - lastUpdateTime; if (timeInterval < UPTATE_INTERVAL_TIME) return; lastUpdateTime = currentUpdateTime; float x = event.values[0]; float y = event.values[1]; float z = event.values[2]; float deltaX = x - lastX; float deltaY = y - lastY; float deltaZ = z - lastZ; lastX = x; lastY = y; lastZ = z; double speed = Math.sqrt(deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ) / timeInterval * 10000; if (speed >= SPEED_SHRESHOLD) { onShakeListener.onShake(); } } public void onAccuracyChanged(Sensor sensor, int accuracy) { } public interface OnShakeListener { public void onShake(); } }
最后资源文件在附件代码中会给出。效果图
发表评论
-
Android 返回键连续点击两次退出应用
2014-12-11 11:06 8731返回键连续点击两次退出应用,一般大家都是使用时间差来实现功能, ... -
android中getX(),getY() 与getRawX(),getRawY()分析
2014-12-09 12:13 3601[b]先看getX(),getY()源码解释 /** ... -
android ScrollView 与listView共存冲突问题解决方法(附图)
2013-05-12 16:18 7931[list] [*] [size=medium] 最近因 ... -
关于anroid设置webview背景方法探讨
2012-11-01 11:33 19634[b]最近的项目中一直关于webView设置背景色问题在研究, ... -
html5在android搭建滚动条
2012-04-26 23:33 3351最近的项目中出现类似IOS滚动条的效果。我们知道在html 中 ... -
css,img,url
2012-04-26 23:12 1899最近在做html5 android手机客户的开发,一个很简单的 ... -
HTML5和android等开发平台的使用及搭建环境
2012-04-23 00:05 1602对HTML5期待很久了,今天有时间也有机会接触一下了,和以前的 ... -
android webview WebViewClient
2012-04-17 23:33 3412最近两天一直在做一个网页连续测试的例子,循环统计各个页面的从向 ... -
Handler Only the original thread that created a view hierarchy can touch its vi
2012-03-16 18:48 2402错误例子:这里使用的Barprogress 在结束后就会报异常 ... -
android 面试题
2012-03-14 23:07 2156什么是Activity? 请描述一下Activ ... -
android webService
2012-03-14 22:43 1270找到几篇在android中使用webservice的文章,觉得 ... -
SharedPreferences
2012-03-09 12:42 2009今天做了对SharedPreferences做了简单的测试,并 ... -
JSONObject JSONARRAY
2012-03-04 00:38 35431.最近做的一个项目中传递的数据类型是Json格式的,所以在封 ... -
youmi移动广告平台
2012-03-02 21:57 1310前段时间,对智能手机投送广告做了一个简单测试。 其实,对于这些 ... -
android 关于图片的放大,缩小,旋转功能的实现(附源码)
2012-03-02 20:51 5114package funo.com.test; import ... -
android应用UI和用户体验
2012-03-02 20:37 747Android应用UI设计和用户体验的10个要点 随着移动 ... -
android listView
2011-12-03 16:18 699在android开发中ListView是比较常用的组件,它 ...
相关推荐
在Activity中加入下面这行代码,即可让当前Activity完全拥有微信摇一摇功能. ShakeListener mShaker = new ShakeListener(this); mShaker.setOnShakeListener(new ShakeListener.OnShakeListener() { public ...
主要介绍了Android 微信摇一摇功能实现详细介绍的相关资料,并附实例代码及实现微信摇一摇的思路,需要的朋友可以参考下
android特效集锦系列之仿微信摇一摇
根据需求做一个类似 微信 摇一摇 的功能;只做了一小部分,只供参考!
命令窗口输入:1、adb shell;2、export CLASSPATH=/data/app/com.liujian.wechatjumphelper-1/base.apk;...然后再次运行apk点击“开始跳一跳”,运行微信打开摇一摇页面,开始游戏。接下来游戏便自己开始跳起来了
android 重力感应仪,高仿微信摇一摇更能!
android仿微信摇一摇,一个简单易懂的例子,想学习的朋友可以参考下
仿微信摇一摇功能android 重力感应开发 本实例主要使用了android的重力感应功能并配合动画及声音效果实现,相信对大家一定很有帮助。
微信摇一摇Android源码
高仿微信摇一摇的Demo,带有音效以及动画效果
利用Sensor实现android手机类似于微信摇一摇,有震动,还有刷刷的声音。
Android仿微信摇一摇功能实现,加载动画,播放声音.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
是一个实现了仿照微信实现的摇一摇Android studio deno源码
加速度传感器是最常见的传感器,大部分Android手机都内置了加速度传感器,加速度传感器运用最广泛的功能就是微信的摇一摇功能,用户通过摇晃手机寻找周围的人,其它类似的应用还摇骰子、玩游戏等。
android,仿微信,摇一摇功能的实现。
android高仿微信聊天界面,包含登陆,摇一摇,发信息等多个界面
Android 仿摇一摇 可运行,摇一摇仿动画