This repository has been archived by the owner on Apr 24, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
LayerDrawableSampleActivity.java
63 lines (51 loc) · 2.15 KB
/
LayerDrawableSampleActivity.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package net.nessness.android.sample.layerdrawable;
import android.app.Activity;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.os.Bundle;
import android.util.Log;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ImageView;
import android.widget.ToggleButton;
public class LayerDrawableSampleActivity extends Activity implements OnCheckedChangeListener {
private LayerDrawable mLayer;
private LayerDrawable mLayerEx;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mLayer = (LayerDrawable)((ImageView)findViewById(R.id.image)).getDrawable();
mLayerEx = (LayerDrawable)((ImageView)findViewById(R.id.image_ex)).getDrawable();
((ToggleButton)findViewById(R.id.button)).setOnCheckedChangeListener(this);
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked){
Drawable drawable = getNewDrawable(isChecked);
Log.i("new drawable", drawable.getBounds().toString());
/**
* GBまで期待通りにならない
* Rectが0 0 0 0
*/
mLayer.setDrawableByLayerId(R.id.number, drawable);
/**
* ICSに習って現在のRectを
* 新しいDrawableに設定してやる
*/
Rect bounds = mLayerEx.findDrawableByLayerId(R.id.number).getBounds();
// 同じDrawableを使わない
drawable = getNewDrawable(isChecked);
drawable.setBounds(bounds);
mLayerEx.setDrawableByLayerId(R.id.number, drawable);
// 再描画
mLayer.invalidateSelf();
mLayerEx.invalidateSelf();
Log.i("mLayer drawable set", mLayer.findDrawableByLayerId(R.id.number).getBounds().toString());
Log.i("mLayerEx drawable set", mLayerEx.findDrawableByLayerId(R.id.number).getBounds().toString());
}
private Drawable getNewDrawable(boolean isChecked){
int res = isChecked? R.drawable.n2: R.drawable.n1;
return getResources().getDrawable(res);
}
}