我正在创建一个壁纸应用程序,因此我将一些图像放在资产文件夹中。我需要在按钮点击时逐个显示此图像并将其存储在SD卡中
我做了什么:
我使用ImageView和WebView来显示图像。首先,当我使用WebView时,我坚持设置图像大小,因为它显示为小,我需要根据设备窗口大小显示这些图像。
我使用以下代码但没有帮助调整屏幕上的图像
myWebView.loadUrl("file:///android_asset/image.html");
WebSettings settings = myWebView.getSettings();
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);
我也设置了<src img="someimage.jpg" width=""100%">
,但它对我没有帮助。
然后我使用ImageView显示图像,并能够使用以下代码至少以适当的大小显示图像。
InputStream ims = getAssets().open("31072011234.jpg");
// load image as Drawable
Drawable d = Drawable.createFromStream(ims, null);
// set image to ImageView
imageView.setImageDrawable(d);
我的问题是
哪个是在屏幕imageview或webview上显示图像的好方法?当我不知道这个图像的名称并将其存储在SD卡中时如何拍摄阵列中的所有图片
给我一些提示或参考。
提前致谢。
答案 0 :(得分:1)
您无需将图片放在assets
文件夹中,您可以使用res/drawable
存储图片并以resource
的形式访问它。
使用以下代码,您可以从drawable访问图像,而无需知道图像文件的名称。
Class resources = R.drawable.class;
Field[] fields = resources.getFields();
String[] imageName = new String[fields.length];
int index = 0;
for( Field field : fields )
{
imageName[index] = field.getName();
index++;
}
int result = getResources().getIdentifier(imageName[10], "drawable", "com.example.name");
使用以下代码,您可以将图像保存到SD卡。
File file = new File(extStorageDirectory, "filename.PNG");
outStream = new FileOutputStream(file);
bm.compress(Bitmap.CompressFormat.PNG, 100, outStream);
outStream.flush();
outStream.close();
答案 1 :(得分:0)
显示图片的最佳方式是ImageView
(这就是为什么它被称为图片视图),我建议您在res/drawable
文件夹中添加图片并显示图像使用:
imageView.setImageResource(R.id.some_image);
可以使用以下方法将资源保存到SD卡:
Bitmap bm = BitmapFactory.decodeResource( getResources(), R.id.some_image);
String extStorageDirectory = Environment.getExternalStorageDirectory().toString();
File file = new File(extStorageDirectory, "someimage.PNG");
outStream = new FileOutputStream(file);
bm.compress(Bitmap.CompressFormat.PNG, 100, outStream);
outStream.flush();
outStream.close();