在Android缓存中存储位图截图

时间:2011-04-13 15:07:35

标签: android

有人可以帮我把我的代码放在商店下面缓存而不是我的SD卡。我正在截取我的应用程序的屏幕截图,用于在社交媒体上分享。


// image naming and path  to include sd card
                String mPath = Environment.getExternalStorageDirectory().toString() + "/" + ACCUWX.IMAGE_APPEND;   

                // create bitmap screen capture
                Bitmap bitmap;
                View v1 = mCurrentUrlMask.getRootView();
                v1.setDrawingCacheEnabled(true);
                bitmap = Bitmap.createBitmap(v1.getDrawingCache());
                v1.setDrawingCacheEnabled(false);

                OutputStream fout = null;
                imageFile = new File(mPath);

                try {
                    fout = new FileOutputStream(imageFile);
                    bitmap.compress(Bitmap.CompressFormat.JPEG, 90, fout);
                    fout.flush();
                    fout.close();

                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

这是我的社交媒体代码,分享屏幕截图:


Intent socialIntent = new Intent(Intent.ACTION_SEND); 
                    socialIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
                    Uri uri = Uri.fromFile(new File(mPath));

                    socialIntent.putExtra(Intent.EXTRA_STREAM, uri);
                    socialIntent.setType("image/jpeg");

                    startActivity(Intent.createChooser(socialIntent, "How do you wanna share?"));

1 个答案:

答案 0 :(得分:1)

虽然将位图存储在缓存中不是一个好主意,因为会出现内存泄漏问题。但是,您可以执行以下操作来将位图存储在缓存中。

static HashMap<String, Bitmap> cache=new HashMap<String, Bitmap>();

将位图存储到缓存

  

cache.put(filename,bmp);

稍后,使用以下代码从缓存中检索位图,

    if(cache.containsKey(filename)){
        imageView.setImageBitmap(cache.get(filename));
    }