1.在Android項目開發的時候,經??吹胶芷恋腢I界面,比如,當你點擊一張圖片被選中的時候,覆上一張透明的圖片。表示被選中,區別與那些沒有被選中的。這種是如何實現的呢?答案是LayerDrawable的使用出現的效果。下面是LayerDrawable的總結,若有不正確的地方,請大家指正。
2.簡單的來說,LayerDrawable繼承與Drawable,Drawable就是一個可畫的對象,可能是一張位圖BitmapDrawable,也可能是一個圖形ShapeDrawable,還有可能是一個圖層LayerDrawable。根據不同的畫圖需求創建相應的可畫對象。
LayerDrawable系統將會按這些Drawable對象的數組順序來繪制它們,索引最大的Drawable對象將會被繪制在最上面,定義LayerDrawable對象的XML文件的根元素layer-list ,該元素可以包含多個item元素。
3.代碼實現如下:
方法一:XML方式:
<item>
<bitmap
android:gravity="center"
android:src="@drawable/ic_03" />
</item>
<item
android:left="25dp"
android:top="25dp">
<bitmap
android:gravity="center"
android:src="@drawable/ic_03" />
</item>
<item
android:left="50dp"
android:top="50dp">
<bitmap
android:gravity="center"
android:src="@drawable/ic_03" />
</item>
</layer-list>
方法二:代碼方式:MainActivity.java類:
import android.app.Activity;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ImageView;
public class MainActivity extends Activity {
private ImageView mView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mView = (ImageView) findViewById(R.id.imageView1);
// 創建資源對象
Resources resources = getResources();
// 創建數組對象
Drawable[] layers = new Drawable[2];
layers[0] = resources.getDrawable(R.drawable.ic_01);
layers[1] = resources.getDrawable(R.drawable.ic_02);
LayerDrawable layerDrawable = new LayerDrawable(layers);
// 設置背景
mView.setImageDrawable(layerDrawable);
}
}
新聞熱點
疑難解答
圖片精選