自定义ImageView控件,根据重力感应,图片左右摇摆(只是类似于摇一摇的简单Demo。真机测试,不要用虚拟机,虚拟机没有重力感应。会有抖动现象,因为重力感应一直在变,可以参考下http://download.csdn.net/detail/daweibalang717/6800609,请下载后自己完善)

下面是主代码:

public void setText(String text,float size){

this.text = text;

myPaint.setColor(Color.WHITE);

myPaint.setTextSize(size);

myPaint.setAntiAlias(true);//防止边缘的锯齿

myPaint.setFilterBitmap(true);//对位图进行滤波处理。

FontMetrics fm = myPaint.getFontMetrics(); //字体属性集

TextHeight = (float) Math.ceil(fm.descent - fm.top); //文字的高

float [] widths = new float[text.length()];

myPaint.getTextWidths(text, widths);

for (int i =0;i

TextWidth += widths[i];

}

}

public void setImage(int id){

bitmap = BitmapFactory.decodeResource(context.getResources(), id);

BufferBitmap = Bitmap.createBitmap(bitmap.getWidth()+width_padding, bitmap.getHeight()+height_padding, bitmap.getConfig());//因为要摆动,宽高增加一些

mCanvas = new Canvas(BufferBitmap);

isHavaeImage = true;

}

@Override

protected void onDraw(Canvas canvas)

{

// TODO Auto-generated method stub

super.onDraw(canvas);

}

@Override

public void doRotate(float x)

{

// TODO Auto-generated method stub

synchronized (this)

{

float degrees = (x / 10 )*90; // 求出角度。 x的重力加速度最大值为10 90度

System.out.println("偏角:"+ degrees);

matrix.postRotate(degrees-myDegress,BufferBitmap.getWidth()/2,0);

myDegress = degrees;

if(isHavaeImage && degrees>=-20.0 && degrees <=20.0){ //最大最小偏转度为20 -20;

clear(mCanvas);

mCanvas.setMatrix(matrix);

mCanvas.drawBitmap(bitmap,width_padding/2,0, myPaint);

mCanvas.drawText(text,(bitmap.getWidth()+width_padding-TextWidth)/2,bitmap.getHeight()/2+TextHeight, myPaint);//文字是以左下点为坐标的

setImageBitmap(BufferBitmap);//把缓存图形设置给Imageview;

invalidate();

}

}

}

public void clear(Canvas cancas){

Paint paint = new Paint();

paint.setXfermode(new PorterDuffXfermode(Mode.CLEAR));

cancas.drawPaint(paint);

}

android图标重力感应插件,重力感应,图片摆动旋转(自定义控件) android相关推荐

  1. Android开发--Matrix(二)--实现图片的旋转

    Matrix功能很是强大,利用这个类提供的一系列方法,我们可以实现图片的旋转. 下面以一个例子说明实现方法. 首先,我们看下实现的截图: 下面给出具体的实现代码: 1.xml布局文件 <?xml ...

  2. Android 部分手机拍照后获取的图片被旋转

    三星手机拍摄后的照片被旋转了90度,横着拍给你变成竖的,竖的拍给你变成横的...其它品牌的手机都是正常的,就三星出现这个怪事. 解决办法是获取到拍照后照片被旋转的角度,再旋转回去就好了. 在获取相机返 ...

  3. android 自动相机 图片旋转问题,Android部分手机拍照后获取的图片被旋转问题的解决方法...

    调用Android系统拍照功能后,三星手机拍摄后的照片被旋转了90度,横着拍给你变成竖的,竖的拍给你变成横的.其它品牌的手机都是正常的,就三星出现这个怪事. 在Android适配上,我原来一直以为国内 ...

  4. 【Android 安装包优化】WebP 图片格式兼容与性能 ( Android 中的 WebP 图片格式兼容问题 | Android 中的 WebP 图片格式性能 )

    文章目录 一.Android 中的 WebP 图片格式兼容问题 二.Android 中的 WebP 图片格式性能 三.参考资料 一.Android 中的 WebP 图片格式兼容问题 在 Android ...

  5. Android进阶之路 - 解决部分手机拍照之后图片被旋转的问题

    这几天犯了一个错误,初期想着甩锅给后台的- 但还好及时发现了是自身的问题~ 关联文章 Android基础进阶 - 调用拍照.获取图片(基础) Android基础进阶 - 获取.调用相册内图片(基础) ...

  6. Android基础进阶 - 调用拍照、获取图片

    本篇给大家带来的是拍照回传的初级使用,用的同样是数据回传的方式,首先 startActivityForResult 确定 Action.requestCode,之后重写 onActivityResul ...

  7. ios 拍照上传到服务器_ios端浏览器拍照上传到服务器,图片被旋转90度 php 解决方案...

    1.可以通过前端进行解决,本案例通过后端解决的 判断请求的浏览器的ua,如果是ios浏览器则进行90度旋转 重点来了: 必须确保检测的图片是ios设备上传的完整图片,不要在前端压缩过的,因为压缩后的图 ...

  8. linux屏幕旋转后触控不准,手机重力感应失效解决方法 不能自动旋转屏幕怎么设置...

    如今手机已经成为人们生活中必不可少的一个工具了,在使用过程也常常会遇到各种各样的问题,比如当手机重力感应失效的时候应该怎么解决呢,手机不能自动旋转屏幕要怎么设置,针对这个问题下面就为大家带来最新解决方 ...

  9. android动态图标主题,【官方秘籍】MAML动态图标百变插件完美适配全机型教程

    [官方秘籍]MAML动态图标&百变插件完美适配全机型教程 发布时间: 2016-01-27 11:29 一份manifest文件,可以同时运行在多个设备,只需要设置好在不同尺寸或密度的设备上使 ...

  10. Android - 小功能 - 传感器之重力传感器

      一:什么是传感器: 所谓传感器能够探测如光.热.温度.重力.方向 等等的功能!         二:Android中提供传感器有哪些: 1.  加速度传感器(重力传感器)         2.   ...

最新文章

  1. mysql cascade的用法_MySQL常用操作笔记
  2. Shell中read的常用方式
  3. Angular应用从Component到Html的数据绑定是如何实现的 -数据流的讨论
  4. etlgr是什么服务器_ETL是指什么 - 金融行业 - ITPUB论坛-中国专业的IT技术社区
  5. 【基于注解方式】Spring整合Kafka
  6. (14)FPGA面试技能提升篇(nlint工具、CDC方法)
  7. windows操作系统下载tomcat,并与eclipse进行整合
  8. C#的解题思路(1):不重复随机数的产生问题
  9. 什么是网关,网关的作用
  10. python文件都是脚本吗_脚本语言系列之Python | Python文件IO
  11. oracle sql试题
  12. 千脑智能理论:开启创造机器智能的路线图 | 《千脑智能》
  13. 易语言 火眼 哈勃 防分析源码
  14. 手机端,网站页面被浏览器转码
  15. 安徽大学计算机科学与技术学院张磊,吕钊(安徽大学计算机科学与技术学院副教授)_百度百科...
  16. 渠道分析 之 渠道分析的价值 -3
  17. 路由器和交换机的工作原理---笔面试
  18. 解决chrt: failed to set pid 0‘s policy: Operation not permitted
  19. html保存时出现nul,c# – 有时保存的文件只包含NUL字符
  20. java中提示确认_javascript对话框使用方法(警告框 javascript确认框 提示框)

热门文章

  1. [USACO] Team Tic Tac Toe
  2. Fatal error: Call to undefined function ParCv() in E:\AppServ\www\include\dedesql.class.php on line
  3. 3des解密 mysql_转角处拐弯007
  4. 概要设计 重要性_艺术留学——服装设计
  5. 如何删除计算机新用户,如何将电脑里的账户信息彻底删除
  6. 使用ffmpeg合并mp4文件
  7. Apollo选型及优势介绍
  8. 51单片机八段数码c语言程序,51单片机做的音乐盒,带八段数码管显示程序+Proteus仿真...
  9. pandas:float divided by zero
  10. 300多张电脑壁纸打包下载,高清电脑壁纸