android view rotate,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 的全部内容,希望对大家有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值