Android使用RotateImageView 旋轉(zhuǎn)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 { /**旋轉(zhuǎn)角度**/ private float _degree; /**旋轉(zhuǎn)中心**/ private float _x; private float _y; /** 背景和前景資源 */ private Bitmap _bgRes, _fgRes; /** 數(shù)字圖片資源 */ 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(); } }
以上代碼是關(guān)于Android RotateImageView 可旋轉(zhuǎn)ImageView 的全部內(nèi)容,希望對(duì)大家有所幫助。
- Android自定義View實(shí)現(xiàn)QQ運(yùn)動(dòng)積分轉(zhuǎn)盤抽獎(jiǎng)功能
- Android 自定View實(shí)現(xiàn)仿QQ運(yùn)動(dòng)步數(shù)圓弧及動(dòng)畫效果
- Android自定義View仿微博運(yùn)動(dòng)積分動(dòng)畫效果
- Android UI之ImageView實(shí)現(xiàn)圖片旋轉(zhuǎn)和縮放
- Android UI設(shè)計(jì)系列之ImageView實(shí)現(xiàn)ProgressBar旋轉(zhuǎn)效果(1)
- Android自定義View葉子旋轉(zhuǎn)完整版(六)
- Android自定義View實(shí)現(xiàn)QQ音樂中圓形旋轉(zhuǎn)碟子
- Android自定義View實(shí)現(xiàn)葉子飄動(dòng)旋轉(zhuǎn)效果(四)
- Android中imageView圖片放大縮小及旋轉(zhuǎn)功能示例代碼
- Android自定義View圖片按Path運(yùn)動(dòng)和旋轉(zhuǎn)
相關(guān)文章
Android如何在App中啟動(dòng)系統(tǒng)鬧鐘
這篇文章主要為大家詳細(xì)介紹了Android如何在App中啟動(dòng)系統(tǒng)鬧鐘,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01Android實(shí)現(xiàn)底部導(dǎo)航欄效果
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)底部導(dǎo)航欄效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01解決java.lang.NoClassDefFoundError: android.support.v4.animati
這篇文章主要介紹了解決Android Studio出現(xiàn)java.lang.NoClassDefFoundError: android.support.v4.animation.AnimatorCompatHelper的問題,感興趣的朋友一起看看吧2021-08-08flutter 自定義websocket路由的實(shí)現(xiàn)
這篇文章主要介紹了flutter 自定義websocket路由的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12快速解決Android平臺(tái)移植ffmpeg的一些問題
模仿Android的MediaPlayer類實(shí)現(xiàn)了ffmpeg的播放接口,如setDataSource(),setDisplay(),start(), stop(),pause()等,缺點(diǎn)是沒有實(shí)現(xiàn)seek功能2013-11-11解決flutter 錯(cuò)誤: 程序包androidx.lifecycle不存在問題
這篇文章主要介紹了解決flutter 錯(cuò)誤: 程序包androidx.lifecycle不存在問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09