最近做了個留言板的功能,可以發送視頻,圖片,文字,表情,畫板和語音;其中圖片和視頻的效果要跟微信中的效果一樣。不知道其他人是怎么做的,我是在圖片加載成功后又對圖片做了處理,加了個遮罩效果;
adapter中的代碼:
ImageLoader.getInstance().displayImage(picPath,holder.image,options,new SimpleImageLoadingListener(){ @Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage){ finalHolder.image.setImageBitmap(MsgUtil.addBigFrame(loadedImage,R.drawable.message_bg,0,displaySize)); }});MsgUtil.java中的代碼;
PRivate static final String TAG = "MsgUtil"; //給圖片添加蒙版 public static Bitmap addBigFrame(Bitmap bm,int res,int videoPic,int[] display){ //Bitmap frameBitmap = BitmapFactory.decodeResource(getResources(),res); Bitmap frameBitmap = readBitMap(res); Drawable[] array = new Drawable[2];// float scale;// if(bm.getWidth()>=bm.getHeight()){// scale = display[0]/(float)bm.getWidth();// }else{// scale = display[1]/(float)bm.getHeight();// }//// Matrix matrix = new Matrix();// matrix.setScale(scale, scale);//// bm = Bitmap.createBitmap(bm,0,0,bm.getWidth(),bm.getHeight(),matrix,true);// if(videoPic == 1){// frameBitmap = Bitmap.createScaledBitmap(frameBitmap,bm.getWidth()*3,bm.getHeight()*3,false);// }else{ //用原來圖片的大小創建遮罩圖 frameBitmap = Bitmap.createScaledBitmap(frameBitmap,bm.getWidth(),bm.getHeight(),false);// } LogUtil.d(TAG,"frameBitmap.getWidth()="+frameBitmap.getWidth()+",frameBitmap.getHeight()="+frameBitmap.getHeight()); array[0] = new BitmapDrawable(bm); array[1] = new BitmapDrawable(frameBitmap); LayerDrawable layerDrawable = new LayerDrawable(array); layerDrawable.setLayerInset(0, 0, 0, 0, 0); // layerDrawable.setBounds(); return drawableToBitmap(layerDrawable); } //將Drawable轉換成Bitmap public static Bitmap drawableToBitmap(Drawable drawable){// Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(),// drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565); Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.RGB_565); Canvas canvas = new Canvas(bitmap); drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); drawable.draw(canvas); return bitmap; } //以最省內在的方式創建Bitmap public static Bitmap readBitMap(int resId){ BitmapFactory.Options options = new BitmapFactory.Options(); options.inPreferredConfig = Bitmap.Config.RGB_565; options.inPurgeable=true; options.inInputShareable = true; InputStream is = HaierApp.getContext().getResources().openRawResource(resId);// InputStream is = getImg(Environment.getExternalStorageDirectory()+"/download_test/downloadtest.jpg"); return BitmapFactory.decodeStream(is,null,options); }下面是用來遮罩的圖片
新聞熱點
疑難解答