摇一摇切图.apk

先上代码再说话!

清单文件加权限:

<uses-permission android:name="android.permission.VIBRATE"/>

布局文件:

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:id="@+id/container"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     tools:context="com.example.shake.MainActivity"
 7     tools:ignore="MergeRootFrame"
 8     android:orientation="vertical">
 9
10     <ImageView
11         android:id="@+id/iv"
12         android:layout_width="match_parent"
13         android:layout_height="match_parent"
14         android:scaleType="fitXY"
15         android:src="@drawable/yaoyao"
16         />
17 </LinearLayout>

代码:

  1 package com.example.shake;
  2
  3 import java.io.IOException;
  4
  5 import android.R.id;
  6 import android.app.Activity;
  7 import android.app.ActionBar;
  8 import android.app.Fragment;
  9 import android.graphics.Bitmap;
 10 import android.graphics.BitmapFactory;
 11 import android.hardware.Sensor;
 12 import android.hardware.SensorEvent;
 13 import android.hardware.SensorEventListener;
 14 import android.hardware.SensorManager;
 15 import android.os.Bundle;
 16 import android.os.Vibrator;
 17 import android.util.Log;
 18 import android.view.LayoutInflater;
 19 import android.view.Menu;
 20 import android.view.MenuItem;
 21 import android.view.View;
 22 import android.view.ViewGroup;
 23 import android.widget.ImageView;
 24 import android.os.Build;
 25
 26 public class MainActivity extends Activity {
 27
 28     private SensorManager sm;
 29     private Sensor sensor;
 30     private MyListener listener;
 31
 32     private ImageView iv;
 33
 34     private int flag = 1; //用于切图,打个标记,根据不同的flag调用不同图片
 35
 36     @Override
 37     protected void onCreate(Bundle savedInstanceState) {
 38         super.onCreate(savedInstanceState);
 39         setContentView(R.layout.activity_main);
 40
 41         iv = (ImageView) findViewById(R.id.iv);
 42
 43         //创建传感器管理者
 44         sm = (SensorManager) getSystemService(SENSOR_SERVICE);
 45         //创建传感器
 46         sensor = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
 47         listener = new MyListener();
 48         sm.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_GAME); //SensorManager.SENSOR_DELAY_GAME表示传感器灵敏度设置
 49
 50
 51     }
 52
 53     private class MyListener implements SensorEventListener{
 54
 55         @Override
 56         public void onSensorChanged(SensorEvent event) {
 57             float [] value = event.values;
 58             Log.v("1", value[0]+""); //打印log看下传感器值
 59                         //value[0]
 60             if(value[0] > 17){
 61                 System.out.println(flag);
 62                 f();
 63                 BitmapFactory.Options options = new BitmapFactory.Options();
 64                  Bitmap bitmap;
 65                  if(flag == 1){
 66                      try {
 67                             bitmap = BitmapFactory.decodeStream(getAssets().open("1.jpg"), null, options);
 68                              iv.setImageBitmap(bitmap);
 69                              flag++;
 70
 71                              return;
 72                         } catch (IOException e) {
 73                             // TODO Auto-generated catch block
 74                             e.printStackTrace();
 75                         }
 76                  }else if(flag == 2){
 77                      try {
 78                         bitmap = BitmapFactory.decodeStream(getAssets().open("22.jpg"), null, options);
 79                         iv.setImageBitmap(bitmap);
 80                          flag++;
 81                          return;
 82                     } catch (IOException e) {
 83                         // TODO Auto-generated catch block
 84                         e.printStackTrace();
 85                     }
 86
 87                  }else if(flag == 3){
 88                      try {
 89                              //getAssets().open("33.jpg")调用assets中的图片文件
 90                              //把文件流转化成bitmap位图
 91                             bitmap = BitmapFactory.decodeStream(getAssets().open("33.jpg"), null, options);
 92                             iv.setImageBitmap(bitmap);
 93                              flag = 1;
 94                              return;
 95                         } catch (IOException e) {
 96                             // TODO Auto-generated catch block
 97                             e.printStackTrace();
 98                         }
 99                  }
100
101
102
103
104             }
105
106         }
107
108         @Override
109         public void onAccuracyChanged(Sensor sensor, int accuracy) {
110             // TODO Auto-generated method stub
111
112         }
113
114     }
115
116     //震动
117     private void f(){
118         Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
119         long[] pattern = {100, 1000, 50, 30}; // OFF/ON/OFF/ON...
120         vibrator.vibrate(pattern, -1);//-1不重复,非-1为从pattern的指定下标开始重复
121     }
122
123     @Override
124     protected void onDestroy() {
125         sm.unregisterListener(listener);
126         super.onDestroy();
127     }
128
129
130
131 }
132                         

目前的问题是,在摇动终端的时候,震动没问题,但切图有时过快,摇一下切了两张图。待排查。

时间: 2024-10-21 12:08:38

摇一摇切图.apk的相关文章

【WP开发】实现“摇一摇”功能

尽管我的微信是每八个月登录一次,但我相信各位玩得比我多.微信有一个“摇一摇”功能,这个功能其实是利用了加速度传感器来实现的,这个传感器,我估计再低端的手机都会有的,这是严重基本的传感器. 重力加速度既可以用于判断手机当前所放置的方向,也可以用来检测运动方向,当用户甩手机时就会产生运动加速度. 位于Windows.Devices.Sensors命名空间下的Accelerometer类封装了重力加速器相关的操作,“摇一摇”可以判断手机在X,Y,Z三个方向上的加速度来实现,甩手机时比较激动,因此,X,

利用传感器(sensor)实现微信摇一摇动画

所需要的权限: <uses-permission android:name="android.permission.VIBRATE"></uses-permission> xml文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/and

HTML5 摇一摇加强版之一次失败的探索

最近在看设备传感器的API,当然也少不了研究一下让微信称神的“摇一摇”了.关于“摇一摇”的实现,网上很多资料所以不详细说了,但总是有布局.效果不全等各种问题,所以作为一名资深copypaster,代码肯定是要贴的: 源码在此 核心代码是这一段: this.deviceMotionHandler = function(eventData) { var acceleration = eventData.acceleration; var curTime = new Date().getTime();

央视春晚摇一摇最有可能颠覆哪些行业?

昨 晚,全国人民都在跟随着央视春晚摇动着手机.摇啊摇,有的摇出了红包,有的摇出了卡券.开玩笑的说,国家体育总局花了二十年没有搞起来的全民健身运动,微 信只花了一个晚上就达到目的了.其中22:30央视春晚摇一摇送红包这波,微信总摇一摇次数达72亿次,峰值高达一分钟8.1亿次(22:34),送出红 包1.2亿个,背后是牛逼的技术和强大的商业逻辑. 我 必须要为“春晚摇一摇”点32个赞.其一是升级了红包的概念,将微信红包从用户个人行为转向为企业营销行为,商业化才是最有前途的:其二是解放了摇一摇功 能,

Android 微信摇一摇功能实现

开发之前 今天学习了一下传感器, 脑子里就蹦出了微信的摇一摇, 于是鼓了鼓勇气抽空写了出来, 本人菜鸟一枚, 希望大神们多多指点 开发环境 Android Studio 2.2.1 JDK1.7 API 24 Gradle 2.2.1 相关知识点 加速度传感器 补间动画 手机震动 (Vibrator) 较短 声音/音效 的播放 (SoundPool) 开始开发 案例预览 案例分析 我们接下来分析一下这个案例, 当用户晃动手机时, 会触发加速传感器, 此时加速传感器会调用相应接口供我们使用, 此时

模仿微信摇一摇功能

1,xml文件----shake_activity.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="fi

手机摇一摇功能音量大小跟系统音量一致

源码免费下载 布局文文件:main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent&qu

玩转Android之加速度传感器的使用,模仿微信摇一摇

Android系统带的传感器有很多种,最常见的莫过于微信的摇一摇了,那么今天我们就来看看Anroid中传感器的使用,做一个类似于微信摇一摇的效果. OK ,废话不多说,我们就先来看看效果图吧: 当我摇动手机的时候这里的动画效果基本和微信上的动画效果一致,这里请大家自行脑补微信摇一摇画面. 那我们就动手吧. 1.布局文件 好,那我们先来看看布局文件吧,在布局文件的正中央是一个花的图片,上图大家看到的手机图片实际上是两张图片拼接在一起,将花的那张图片遮住了,当摇一摇的时候,这两张图片分别向上或者向下

ionic 完美仿微信摇一摇

今天我们使用ionic框架完美仿制微信摇一摇功能,先来看看最终效果图 ? 制作微信摇一摇功能需要调用 陀螺仪传感器(Device Motion)参考文档地址http://api.ionic-china.com/help/action/Device%20Motion/Device%20Motion.html 播放音效需要 播放音乐(Native Audio)参考文档地址http://api.ionic-china.com/help/action/Native%20Audio/Native%20Au