android 放大鏡ShapeDrawable妙用分享
首先,ShapeDrawable構(gòu)造的時(shí)候可以指定描畫的形狀,
其次,可以通過shape.getPaint().setShader();指定Shader,shader可以接受一個(gè)圖片和matrix
所以問題就順利的解決了:)
具體實(shí)現(xiàn)如下:
[java]
float scale = 1.2f;
int cx = 224;
int cy = 357;
int r = 200;
// 指定形狀創(chuàng)建一個(gè)ShapeDrawable
ShapeDrawable shape=new ShapeDrawable(new OvalShape());
Bitmap bm = BitmapFactory.decodeResource(getResources(),R.drawable.bg1);
BitmapShader bs = new BitmapShader(bm, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
Matrix m = new Matrix();
m.setTranslate(r-cx, r-cy);
m.postScale(scale, scale);
bs.setLocalMatrix(m); // 圖形變換可以在這里實(shí)現(xiàn),包括區(qū)域指定
// 為ShapeDrawable設(shè)置Shader
shape.getPaint().setShader(bs);
// 指定描畫目標(biāo)位置
shape.setBounds((int)(cx-r*scale),(int)(cy-r*scale),(int)(cx+r*scale),(int)(cy+r*scale));
canvas.drawBitmap(bm, 0, 0, null);
shape.draw(canvas);
float scale = 1.2f;
int cx = 224;
int cy = 357;
int r = 200;
// 指定形狀創(chuàng)建一個(gè)ShapeDrawable
ShapeDrawable shape=new ShapeDrawable(new OvalShape());
Bitmap bm = BitmapFactory.decodeResource(getResources(),R.drawable.bg1);
BitmapShader bs = new BitmapShader(bm, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
Matrix m = new Matrix();
m.setTranslate(r-cx, r-cy);
m.postScale(scale, scale);
bs.setLocalMatrix(m); // 圖形變換可以在這里實(shí)現(xiàn),包括區(qū)域指定
// 為ShapeDrawable設(shè)置Shader
shape.getPaint().setShader(bs);
// 指定描畫目標(biāo)位置
shape.setBounds((int)(cx-r*scale),(int)(cy-r*scale),(int)(cx+r*scale),(int)(cy+r*scale));
canvas.drawBitmap(bm, 0, 0, null);
shape.draw(canvas);
相關(guān)文章
Android實(shí)現(xiàn)EditText換行自動(dòng)縮進(jìn)功能
在很多需要輸入多行文本的應(yīng)用(如記事本、編程代碼編輯器、博客編輯器等)中,自動(dòng)縮進(jìn)功能能大大提升用戶的編輯效率與體驗(yàn),本文給大家介紹了Android實(shí)現(xiàn)EditText換行自動(dòng)縮進(jìn)功能,下面提供整合后的完整代碼示例,需要的朋友可以參考下2025-04-04
Android EditText實(shí)現(xiàn)輸入金額類型詳解
EditText是Android中一個(gè)非常實(shí)用的控件,有很多InputType,可以來達(dá)到不同的輸入效果,下面這篇文章主要給大家介紹了關(guān)于Android EditText實(shí)現(xiàn)輸入金額類型的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。2017-09-09
android studio 3.4配置Android -jni 開發(fā)基礎(chǔ)的教程詳解
這篇文章主要介紹了android studio 3.4配置Android -jni 開發(fā)基礎(chǔ),本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09
Android中ListView綁定CheckBox實(shí)現(xiàn)全選增加和刪除功能(DEMO)
本文通過實(shí)例給大家講解了Android中ListView綁定CheckBox實(shí)現(xiàn)全選增加和刪除功能(DEMO)的代碼,對android checkbox全選相關(guān)知識感興趣的朋友一起學(xué)習(xí)吧2016-08-08
Android控件之ScrollView用法實(shí)例分析
這篇文章主要介紹了Android控件之ScrollView用法,以完整實(shí)例形式較為詳細(xì)的分析了ScrollView控件滾動(dòng)顯示的實(shí)現(xiàn)技巧,需要的朋友可以參考下2015-09-09
Android項(xiàng)目實(shí)戰(zhàn)之ListView懸浮頭部展現(xiàn)效果實(shí)現(xiàn)
這篇文章主要給大家介紹了Android項(xiàng)目實(shí)戰(zhàn)之ListView懸浮頭部展現(xiàn)效果實(shí)現(xiàn)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-01-01

