最近做了个留言板的功能,可以发送视频,图片,文字,表情,画板和语音;其中图片和视频的效果要跟微信中的效果一样。不知道其他人是怎么做的,我是在图片加载成功后又对图片做了处理,加了个遮罩效果;
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); }
下面是用来遮罩的图片