1.在Android項(xiàng)目開發(fā)的時(shí)候,經(jīng)常看到很漂亮的UI界面,比如,當(dāng)你點(diǎn)擊一張圖片被選中的時(shí)候,覆上一張透明的圖片。表示被選中,區(qū)別與那些沒有被選中的。這種是如何實(shí)現(xiàn)的呢?答案是LayerDrawable的使用出現(xiàn)的效果。下面是LayerDrawable的總結(jié),若有不正確的地方,請(qǐng)大家指正。
2.簡(jiǎn)單的來(lái)說(shuō),LayerDrawable繼承與Drawable,Drawable就是一個(gè)可畫的對(duì)象,可能是一張位圖BitmapDrawable,也可能是一個(gè)圖形ShapeDrawable,還有可能是一個(gè)圖層LayerDrawable。根據(jù)不同的畫圖需求創(chuàng)建相應(yīng)的可畫對(duì)象。
LayerDrawable系統(tǒng)將會(huì)按這些Drawable對(duì)象的數(shù)組順序來(lái)繪制它們,索引最大的Drawable對(duì)象將會(huì)被繪制在最上面,定義LayerDrawable對(duì)象的XML文件的根元素layer-list ,該元素可以包含多個(gè)item元素。
3.代碼實(shí)現(xiàn)如下:
方法一: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);
        // 創(chuàng)建資源對(duì)象
        Resources resources = getResources();
        // 創(chuàng)建數(shù)組對(duì)象
        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);
        // 設(shè)置背景
        mView.setImageDrawable(layerDrawable);
    }
}
新聞熱點(diǎn)
疑難解答
圖片精選