我编写了一些代码,当单击列表视图时,该位置的图像将存储到外部存储器,然后发送文件路径字符串,以便在默认库中查看图像。唯一的问题是需要花费很长时间(我在霹雳上说的时间超过10秒)。
我尝试过的: 1.将位图存储在内部存储器中 2.降低位图的质量
以下是代码:
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
if(position>0){
Bitmap bmp =adapter.getBitmap(adapter.getData(position-1));
if(bmp!=null){
//String path = context.getCacheDir().getAbsolutePath() + "/view.png";
//File f = new File(context.getCacheDir().getAbsolutePath(),"MemeCache");
//if(!f.exists())
// f.mkdirs();
String path = android.os.Environment.getExternalStorageDirectory().getAbsolutePath() + "/view.png";
Toast.makeText(context, "opening in gallery", Toast.LENGTH_SHORT).show();
File file = new File(path);
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file);
bmp.compress(CompressFormat.PNG, 100, fos );
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(path)), "image/png");
//intent.setDataAndType(Uri.fromFile(f), "image/png");
activity.startActivity(intent);
}else{
Toast.makeText(context, arg0.getItemAtPosition(position).toString() +"is HaAAACkSS!!!!", Toast.LENGTH_SHORT).show();
}
}
}
});
答案 0 :(得分:0)
可能有所帮助的一些事情:
1)为您的代码添加一些计时器或工具,以确切地查看您一直在花费的位置:将位图保存到SD卡,启动意图或其他完全。
2)一旦你添加了定时器并且可以测量性能,你可以看到缩小图像或将图像存储在不同的地方是否有帮助,如果有的话。在某些设备上,内部存储位于SD卡本身上。
3)根据您的程序,您可能需要考虑将文件预先保存到SD卡(可能在后台),以便在用户尝试使用时可能已保存在画廊中查看它们。