Android 倒影算法的實(shí)現(xiàn)代碼
更新時(shí)間:2013年05月30日 10:44:47 作者:
Android 倒影算法的實(shí)現(xiàn)代碼,需要的朋友可以參考一下
復(fù)制代碼 代碼如下:
public class MirrorView extends View {
Paint m_paint;
int m_nShadowH;
Drawable m_dw;
Bitmap m_bitmap;
//xxxx
Matrix mMatrix;
int shadowHeight;
public MirrorView(Context context, Bitmap bitmap) {
super(context);
m_bitmap = bitmap;
_Init();
// TODO Auto-generated constructor stub
}
private void _Init() {
//m_dw = new BitmapDrawable(BitmapFactory.decodeResource(getResources(), R.drawable.icon));
m_dw = new BitmapDrawable(m_bitmap);
m_dw.setBounds(0,0,m_dw.getIntrinsicWidth(),m_dw.getIntrinsicHeight());
m_nShadowH = m_dw.getIntrinsicHeight()/1;
m_paint = new Paint(Paint.ANTI_ALIAS_FLAG);
LinearGradient lg = new LinearGradient(0, 0, 0, m_nShadowH, 0xB0FFFFFF, 0x00000000, Shader.TileMode.CLAMP);
m_paint.setShader(lg);
m_paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.MULTIPLY));
//xxxx
mMatrix = new Matrix();
}
@Override
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
int nX = 0;
int nY = 0;
_DrawNormalImg(canvas, nX, nY);
_DrawMirror(canvas, nX, nY);
}
private void _DrawNormalImg(Canvas canvas, int nX, int nY) {
canvas.save(Canvas.MATRIX_SAVE_FLAG);
canvas.translate(nX, nY);
m_dw.draw(canvas);
canvas.restore();
}
private void _DrawMirror(Canvas canvas, int nX, int nY) {
int nW = m_dw.getIntrinsicWidth();
int nH = m_dw.getIntrinsicHeight();
// U.dout("nW="+nW+",nH="+nH);
//xxxx
shadowHeight=nH/2;
//xxxx
float[] src={0, nH, nW, nH, nW,nH - m_nShadowH, 0, nH - m_nShadowH};
float[] dst={ 0, nH, nW, nH,nW, shadowHeight, 0, shadowHeight };
//xxxx
canvas.save();
mMatrix.setPolyToPoly(src, 0, dst, 0, src.length >> 1);
canvas.concat(mMatrix);
//draw mirror image
canvas.save(Canvas.MATRIX_SAVE_FLAG);
canvas.scale(1.0f, -1.0f);
canvas.translate(nX, -(nY + nH * 2));
canvas.clipRect(0, nH, nW, nH - m_nShadowH);
m_dw.draw(canvas);
canvas.restore();
//draw mask
canvas.save();
canvas.translate(nX, nY + nH);
canvas.drawRect(0, 0, nW, m_nShadowH, m_paint);
canvas.restore();
//xxxx
canvas.restore();
}
}
您可能感興趣的文章:
- android顯示TextView文字的倒影效果實(shí)現(xiàn)代碼
- Android實(shí)現(xiàn)動(dòng)態(tài)向Gallery中添加圖片及倒影與3D效果示例
- Android中使用Matrix控制圖形變換和制作倒影效果的方法
- Android編程滑動(dòng)效果之倒影效果實(shí)現(xiàn)方法(附demo源碼下載)
- Android應(yīng)用開發(fā)之簡易、大氣音樂播放器實(shí)現(xiàn)專輯倒影效果
- Android 輕松實(shí)現(xiàn)圖片倒影效果實(shí)例代碼
- android Bitmap圓角與倒影的具體實(shí)現(xiàn)代碼
- Android 圖像處理(類型轉(zhuǎn)換,比例縮放,倒影,圓角)的小例子
- Android自定義TextView實(shí)現(xiàn)文字傾斜效果
- Android實(shí)現(xiàn)文字翻轉(zhuǎn)動(dòng)畫的效果
- Android實(shí)現(xiàn)文字和圖片混排(文字環(huán)繞圖片)效果
- Android編程實(shí)現(xiàn)文字倒影效果的方法
相關(guān)文章
Android編程實(shí)現(xiàn)自定義進(jìn)度條顏色的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)自定義進(jìn)度條顏色的方法,涉及Android進(jìn)度條的樣式布局及功能實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11
Android創(chuàng)建服務(wù)之started service詳細(xì)介紹
這篇文章主要介紹了Android創(chuàng)建服務(wù)之started service,需要的朋友可以參考下2014-02-02
Android使用RecyclerView仿美團(tuán)分類界面
這篇文章主要為大家詳細(xì)介紹了Android使用RecyclerView仿美團(tuán)分類界面,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05
Android 表情面板和軟鍵盤切換時(shí)跳閃問題的解決方法
這篇文章主要介紹了Android 表情面板和軟鍵盤切換時(shí)跳閃問題的解決方法,需要的朋友可以參考下2017-08-08
Android設(shè)備獲取掃碼槍掃描的內(nèi)容與可能遇到的問題解決
這篇文章主要給大家介紹了關(guān)于Android設(shè)備獲取掃碼槍掃描內(nèi)容的方法,以及在開發(fā)中可能會(huì)遇到的問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11
制作獨(dú)立的Android模擬器實(shí)現(xiàn)方法
本文主要介紹如何制作獨(dú)立的Android模擬器,這里給大家提供詳細(xì)的制作流程,有需要的小伙伴可以參考下2016-08-08

