[解決済み】Androidでプログラム的に背景を描画可能にする方法
2022-03-27 13:57:10
質問
背景を設定するには。
RelativeLayout layout =(RelativeLayout)findViewById(R.id.background);
layout.setBackgroundResource(R.drawable.ready);
というのがベストなのでしょうか?
どのように解決するのですか?
layout.setBackgroundResource(R.drawable.ready);
が正しいです。
別の方法として、次のような方法もあります。
final int sdk = android.os.Build.VERSION.SDK_INT;
if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
layout.setBackgroundDrawable(ContextCompat.getDrawable(context, R.drawable.ready) );
} else {
layout.setBackground(ContextCompat.getDrawable(context, R.drawable.ready));
}
しかし、大きな画像を読み込もうとしているため、問題が発生しているのだと思います。
これ
は、大きなビットマップを読み込む方法についての良いチュートリアルです。
UPDATE
getDrawable(int ) は API レベル 22 で非推奨となりました。
getDrawable(int )
は、API レベル 22 で非推奨になりました。
代わりに、サポートライブラリの以下のコードを使用する必要があります。
ContextCompat.getDrawable(context, R.drawable.ready)
のソースコードを参照すると ContextCompat.getDrawable というようなことが書かれています。
/**
* Return a drawable object associated with a particular resource ID.
* <p>
* Starting in {@link android.os.Build.VERSION_CODES#LOLLIPOP}, the returned
* drawable will be styled for the specified Context's theme.
*
* @param id The desired resource identifier, as generated by the aapt tool.
* This integer encodes the package, type, and resource entry.
* The value 0 is an invalid identifier.
* @return Drawable An object that can be used to draw this resource.
*/
public static final Drawable getDrawable(Context context, int id) {
final int version = Build.VERSION.SDK_INT;
if (version >= 21) {
return ContextCompatApi21.getDrawable(context, id);
} else {
return context.getResources().getDrawable(id);
}
}
の詳細はこちら
ContextCompat
API22では
getDrawable(int, Theme)
メソッドの代わりに、getDrawable(int) を使用します。
UPDATEしてください。
サポートv4ライブラリを使用する場合は、以下のようにすればすべてのバージョンで使用できます。
ContextCompat.getDrawable(context, R.drawable.ready)
アプリのbuild.gradleに以下を追加する必要があります。
compile 'com.android.support:support-v4:23.0.0' # or any version above
また、ResourceCompatを使用して、以下のように任意のAPIで使用することもできます。
import android.support.v4.content.res.ResourcesCompat;
ResourcesCompat.getDrawable(getResources(), R.drawable.name_of_drawable, null);
関連
-
[解決済み] 未処理の例外タイプIOException」が表示されるのですが?
-
[解決済み] javax.naming.NameNotFoundException
-
[解決済み] JavaFX 同じパッケージ内なのに「場所が必要です。
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] Java で、あるコンストラクタを別のコンストラクタから呼び出すにはどうすればよいですか?
-
[解決済み] AndroidのListViewで画像を遅延ロードする方法
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 未処理の例外タイプIOException」が表示されるのですが?
-
[解決済み] Application startメソッドで例外が発生する。JavaFx 11
-
[解決済み] enumのordinalを使用するのは良い習慣ですか?
-
[解決済み] java.lang.IncompatibleClassChangeError: Mongo クラスを実装しています。
-
[解決済み] JOGLまたはLWJGLの既成のプロジェクト
-
[解決済み] 親から継承したメソッドの可視性を下げることができない [重複]。
-
[解決済み] ファイルを作成せずに、ファイルが存在するかどうかをチェックする
-
[解決済み] Java の文字列インデックスが範囲外です。0 [閉店]
-
[解決済み] アニメーションGIFの表示
-
[解決済み] java swingアプリケーションでJCEがプロバイダBCを認証できない