android 文本倒影,android案例---图片处理倒影效果
今天記錄下看到的一個圖片處理倒影效果,方便以后用到
先看看效果
device-2017-08-12-160216.png
as截出來的圖貌似都挺大的
ok,那我們現在來分析代碼,完整代碼/**
*
*?@param?context??上下文
*?@param?resId????圖片id
*?@param?percent??倒影的深度
*?@return?Bitmap
*/
public??Bitmap?getReverseBitmapById(Context?context,?int?resId,?float?percent)?{????????//?獲取原始位圖
Bitmap?srcBitmap=?BitmapFactory.decodeResource(context.getResources(),?resId);????????//?運用Matrix類反轉像素
Matrix?matrix=new?Matrix();
matrix.setScale(1,?-1);????????//創建倒影位圖
Bitmap?rvsBitmap=Bitmap.createBitmap(srcBitmap,?0,?(int)?(srcBitmap.getHeight()*(1-percent)),
srcBitmap.getWidth(),?(int)?(srcBitmap.getHeight()*percent),?matrix,?false);????????//?根據上面原始位圖和倒影位圖高度+相隔20的高度創建新位圖
Bitmap?comBitmap=Bitmap.createBitmap(srcBitmap.getWidth(),
srcBitmap.getHeight()+rvsBitmap.getHeight()+20,?srcBitmap.getConfig());????????//繪制出原始位圖和倒影位圖
Canvas?gCanvas=new?Canvas(comBitmap);
gCanvas.drawBitmap(srcBitmap,?0,?0,?null);
gCanvas.drawBitmap(rvsBitmap,?0,?srcBitmap.getHeight()+20,?null);
Paint?paint=new?Paint();????????//LinearGradient,我們可以將之譯為線型漸變、線型渲染等
//Shader.TileMode.CLAMP,這種模式表示重復最后一種顏色直到該View結束的地方
LinearGradient?shader=new?LinearGradient(0,?srcBitmap.getHeight()+20,?0,?comBitmap.getHeight(),
Color.BLACK,?Color.TRANSPARENT,?Shader.TileMode.CLAMP);
paint.setShader(shader);????????//setXfermode圖像混合
//DST_IN為顯示上方覆蓋內容
paint.setXfermode(new?PorterDuffXfermode(PorterDuff.Mode.DST_IN));
gCanvas.drawRect(0,?srcBitmap.getHeight()+20,?srcBitmap.getWidth(),?comBitmap.getHeight(),?paint);????????return?comBitmap;
}
代碼上都有注釋,應該不難理解
主要是LinearGradient,setXfermode的使用,暫時我也沒能很好運用,其他的都是簡單的位圖操作,相信大家都會
作者:JJ_code
鏈接:https://www.jianshu.com/p/cfe20bcfb71c
總結
以上是生活随笔為你收集整理的android 文本倒影,android案例---图片处理倒影效果的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 和服务通讯,Android
- 下一篇: circlegan_CycleGAN原理