2016-07-01 8 views
2

こんにちは私はプログラムでリサイズされたビットマップをレイヤーリストとして作成しようとしています。 BitmapDrawableは廃止されました。新しいコンストラクタには、次のパラメータが必要です - Public BitmapDrawable(リソースres、ビットマップビットマップ)。私は以下の非常に基本的な例から始めました。プログラムでレイヤーリストを作成する

BitmapDrawable background = new BitmapDrawable(); 
    background.setBounds(10,10,10,10); 
    Drawable[] layers = {background}; 
    LayerDrawable splash_test = new LayerDrawable(layers); 
    splash_test.setLayerInset(0, 0, 0, 0, 0); 

新しいBitmapDrawableコンストラクタを正しく使用するにはどうすればよいのですか。また、drawableリソースをバックグラウンドオブジェクトにリンクする方法を教えてください。

答えて

5

あなたは、いくつかのビットマップからレイヤーリストを作成すると述べました。あなたが持っているものが大体正しいです、あなたがする必要があるのは、各ビットマップオブジェクトをとり、BitmapDrawableに変換することだけです。これを行うには、使用することができます。

BitmapDrawable layer1 = new BitmapDrawable(context.getResources(), bitmap1); 

をあなたが活動している場合は、この操作を行うときにでもcontext.getResources()、ちょうどgetResources()を呼び出す必要はありません。

Drawable[] layers = {layer1, layer2, layer3}; 
LayerDrawable splash_test = new LayerDrawable(layers); 

(つまりレイヤ3は、レイヤ1を超えることになるレイヤ2およびレイヤ2の上になります注意してください):

次に、あなたはすでに多くのと同じように、すべてのレイヤーを取り、あなたのLayerDrawableを作成します。

LayerDrawableを作成したら、view.setBackgoundDrawable(drawable)(API 16以上の場合)またはview.setBackground(drawable)(API16の場合)を使用して、ビューの背景に設定できます。 This postは、デバイスのバージョンを確認して、16個前のデバイスをサポートしている場合は、適切な方法を呼び出す方法を示しています。

レイヤーを相対的に配置したい場合は、コード内にあるようにsetLayerInset()も使用する必要がありますが、表示するレイヤーリストを取得した後で試してみることをおすすめします。

+0

上記のbitmap1は何を参照しているのですか、またはそのオブジェクトを作成するにはどうすればよいですか –

+0

問題ありません! 'bitmap1'は、サイズ変更してレイヤーリストに入れたいビットマップの1つです。私はあなたの質問から、あなたはすでにビットマップを持っていると思っていました。これが当てはまらない場合は、これを行う場所にコードを追加し、ビットマップを取得する予定の場所の説明を追加できますか? –

関連する問題