0

我正在创建一个壁纸应用程序,因此我将一些图像放在资产文件夹中。我需要在按钮单击时一张一张地显示此图像并将其存储在 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 卡中时,如何以数组形式拍摄所有照片 给我一些提示或参考。
提前致谢。

4

2 回答 2

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();
于 2012-12-05T06:36:48.250 回答
0

显示图像的最佳方式是ImageView(这就是为什么它被称为图像视图),我建议您将图像添加到res/drawable文件夹中并使用以下方法显示图像:

imageView.setImageResource(R.id.some_image);

可以使用以下方法将资源保存到 sdcard:

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();
于 2012-12-04T19:59:48.737 回答