Android使用RotateImageView 旋转ImageView

时间:2021-05-20

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

具体代码如下所示:

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;}@Overridepublic 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 的全部内容,希望对大家有所帮助。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章