首页 > 学院 > 开发设计 > 正文

ImageLoader加载完成后,对图片进行处理(仿微信发送图片的效果)

2019-11-06 09:57:38
字体:
来源:转载
供稿:网友

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

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);    }
下面是用来遮罩的图片


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表