1

res/drawable-hdpi/nasa_image.jpg画像を壁紙に設定したい。

私は次のコードを書きましたが、それはを上げますFileNotFoundException

Uri u1 = Uri.fromFile(new File("res/drawable-hdpi/nasa_image.jpg"));
Uri u2 = Uri.parse("android.resource://com.my.package/drawable/nasa_image.jpg");
Uri u3 = Uri.parse("android.resource://com.my.package/" + R.drawable.nasa_image);
WallpaperManager w = WallpaperManager.getInstance(this);

Bitmap bitmap;
try {
    bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(u));
    w.setBitmap(bitmap);
} catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

最初に試しましたu1。うまくいきませんでした。それから私はこれを検索して見つけまし。その後、試しu2てみu3ました。

ログを確認しました。それが同じを与えるたびにFileNotFoundException

それをどのように参照するのですか?私はどこが間違っていますか?間違ったルートディレクトリを使用していますか?

4

3 に答える 3

0

これはアンドロイドでそれを行うには間違った方法だと思います。リソース識別子を使用しないのはなぜですか?

ImageView imgView=(ImageView)findViewById(R.id.imageView1);
int id = getResources().getIdentifier(nasa_image, "drawable", getPackageName());
Drawable drawable=res.getDrawable(id);
imgView.setImageDrawable(drawable);

また

ImageView imgView=(ImageView)findViewById(R.id.imageView1);
Drawable drawable= getResources().getDrawable(R.drawable.nasa_image);
imgView.setImageDrawable(drawable);
imgView.setImageDrawable();

instanceof Bitmapdrawableドローアブルからビットマップに変換するための更新は、これを使用するだけです(ドローアブルが.

Bitmap bitmap = ((BitmapDrawable)drawable).getBitmap();

drawable インスタンスが不明な場合は、このメソッドを使用してください

public static Bitmap drawableToBitmap (Drawable drawable) {
    if (drawable instanceof BitmapDrawable) {
        return ((BitmapDrawable)drawable).getBitmap();
    }

    Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap); 
    drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
    drawable.draw(canvas);

    return bitmap;
}

ファイル パスが正しいことが確実な場合は、この方法を使用します。

 private Drawable getDrawable(String path) {
      File imgFile = new File(path);
      if (imgFile.exists()) {
         Bitmap bitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
         return new BitmapDrawable(resources, bitmap);
      }
      return null;
   }

問題に応じてビットマップまたはドローアブルを返すように調整できます

于 2013-03-09T12:53:35.317 に答える
-1

試す

Uri u1 = Uri.parse("R.drawable.nasa_image");
于 2013-03-09T12:55:25.383 に答える