Android使用RotateImageView 旋转ImageView

 更新时间:2016年01月11日 11:03:39   作者:DerDeath  
这篇文章主要介绍了Android使用RotateImageView 旋转ImageView 的相关资料,需要的朋友可以参考下

废话不多说了,直接给大家代码。

具体代码如下所示:

package com.droidhen.game.layout;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PaintFlagsDrawFilter;
import android.graphics.Rect;
import android.widget.ImageView;
public class RotateImageView extends ImageView {
/**旋转角度**/
private float _degree;
/**旋转中心**/
private float _x;
private float _y;
/** 背景和前景资源 */
private Bitmap _bgRes, _fgRes;
/** 数字图片资源 */
private Bitmap _nums;
private Bitmap _buffer;
private Canvas _canvas;
private int start = ;
private int unitx = ;
public RotateImageView(Context context) {
super(context);
_degree = f;
_x = ;
_y = ;
_nums = BitmapFactory.decodeResource(getResources(), R.drawable.level_num);
}
public void setResIds(int bgResId, int fgResId) {
_bgRes = BitmapFactory.decodeResource(getResources(), bgResId);
_fgRes = BitmapFactory.decodeResource(getResources(), fgResId);
}
public void setLevel(int level) {
String _level = String.valueOf(level);
_buffer = Bitmap.createBitmap( _level.length()*(_nums.getWidth()/), _nums.getHeight(), Config.ARGB_);
unitx = _nums.getWidth()/;
_canvas = new Canvas(_buffer);
for(int i = ; i <= _level.length()-; i++){
Rect src = new Rect((_level.charAt(i) - '')*unitx, , (_level.charAt(i) - '' + )*unitx, _nums.getHeight());
Rect dst = new Rect( i*unitx, , (i + )*unitx, _nums.getHeight());
_canvas.drawBitmap(_nums, src, dst, null);
}
}
public void setLevel(int level, int Resid) {
_nums = BitmapFactory.decodeResource(getResources(), Resid);
String _level = String.valueOf(level);
_buffer = Bitmap.createBitmap( _level.length()*(_nums.getWidth()/), _nums.getHeight(), Config.ARGB_);
unitx = _nums.getWidth()/;
_canvas = new Canvas(_buffer);
for(int i = ; i <= _level.length()-; i++){
Rect src = new Rect((_level.charAt(i) - '')*unitx, , (_level.charAt(i) - '' + )*unitx, _nums.getHeight());
Rect dst = new Rect( i*unitx, , (i + )*unitx, _nums.getHeight());
_canvas.drawBitmap(_nums, src, dst, null);
}
}
public void setDegree(float degree) {
_degree = degree;
}
public void setDegree(float degree, float x, float y) {
_degree = degree;
_x = x;
_y = y;
}
public float getDegree() {
return _degree;
}
public float getRotateX() {
return _x;
}
public float getRotateY() {
return _y;
}
@Override
public void draw(Canvas canvas) {
canvas.save();
canvas.setDrawFilter(new PaintFlagsDrawFilter(, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG)); 
canvas.rotate(_degree, _x, _y);
canvas.drawBitmap(_bgRes, , , null);
canvas.drawBitmap(_fgRes, , , null);
canvas.drawBitmap(_buffer, (_bgRes.getWidth() - _buffer.getWidth())/f, , null);
canvas.restore();
}
}

以上代码是关于Android RotateImageView 可旋转ImageView 的全部内容,希望对大家有所帮助。

相关文章

  • Android游戏源码分享之2048

    Android游戏源码分享之2048

    本文主要是给大家分享了安卓版的游戏2048的源码,以及制作思路,是篇非常不错的文章,有需要的朋友可以参考下
    2014-10-10
  • Android EditText限制输入字符类型的方法总结

    Android EditText限制输入字符类型的方法总结

    这篇文章主要介绍了Android EditText限制输入字符类型的方法总结的相关资料,需要的朋友可以参考下
    2017-03-03
  • Android 实现页面跳转

    Android 实现页面跳转

    android使用Intent来实现页面跳转,接下来通过本文给大家分享Android 实现页面跳转的实例代码,需要的的朋友参考下吧
    2017-09-09
  • Android ListView实现无限循环滚动

    Android ListView实现无限循环滚动

    这篇文章主要为大家详细介绍了Android ListView实现无限循环滚动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-06-06
  • Android编程之软键盘的隐藏显示实例详解

    Android编程之软键盘的隐藏显示实例详解

    这篇文章主要介绍了Android编程之软键盘的隐藏显示,结合实例形式详细分析了Android编程中软键盘的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-12-12
  • Android修行手册之ConstraintLayout布局使用详解

    Android修行手册之ConstraintLayout布局使用详解

    这篇文章主要为大家介绍了Android修行手册之ConstraintLayout使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • Android实现可复用的选择页面

    Android实现可复用的选择页面

    这篇文章主要为大家详细介绍了Android实现可复用的选择页面,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • Android编程中号码匹配位数修改的方法

    Android编程中号码匹配位数修改的方法

    这篇文章主要介绍了Android编程中号码匹配位数修改的方法,涉及Android编程中参数修改的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • Android编程实现上方通知栏里闪动效果的方法

    Android编程实现上方通知栏里闪动效果的方法

    这篇文章主要介绍了Android编程实现上方通知栏里闪动效果的方法,结合实例形式分析了Android通知栏动画特效具体实现技巧,需要的朋友可以参考下
    2017-02-02
  • kotlin中使用ViewBinding绑定控件的方法

    kotlin中使用ViewBinding绑定控件的方法

    View Binding是Android Studio 3.6推出的新特性,主要用于减少findViewById的冗余代码,但内部实现还是通过使用findViewById,这篇文章主要介绍了kotlin中使用ViewBinding绑定控件,需要的朋友可以参考下
    2024-03-03

最新评论