編輯:關於Android編程
之前已經介紹了ShapeDrawable的主要使用方法,今天將主要介紹一些其他的Android定義好的drawable類,如BitmapDrawable、LayerDrawable等。
Drawable官網地址:https://developer.android.com/guide/topics/resources/drawable-resource.html
//代碼中引用
效果如下:
repeat模式:
mirror模式:
clamp模式:
LayerDrawable:對應於標簽,它實現一種層次化的drawable集合,通過將不同的drawable放在不同的層次上顯示一種疊加的效果。默認情況下,中的所有的drawable都會被縮放至View的大小,為了避免這種情況,可以通過使用避免圖片的縮放。
效果圖:
LevelListDrawable,對應於標簽,它同樣表示一個drawable集合,集合中的每個item都會設置一個等級,這樣通過設置item的Level,實現顯示不同的drawable。每個item都可以設置android:maxLevel和android:minLevel,drawable的等級的方位是0-10000,默認是0。同樣在item中,圖片同樣會被縮放,所以需要使用標簽。
public void setLevel(View view) { EditText edittest = (EditText) findViewById(R.id.et_level); String trim = edittest.getText().toString().trim(); int i = Integer.parseInt(trim); ImageView imageview = (ImageView) findViewById(R.id.iv_level); LevelListDrawable drawable = (LevelListDrawable) imageview.getDrawable(); // drawable.setLevel(i); imageview.setImageLevel(i); }
效果圖:
TransitionDrawable,對應於標簽,用於實現兩個drawable的淡入淡出。通過Drawable的startTransition和reverseTransition方法實現淡入淡出和其逆過程。
/** * TransitionDrawable 淡入淡出 * * @param view */ public void setTransition(View view) { ImageView imageview = (ImageView) findViewById(R.id.iv_transition); TransitionDrawable drawable = (TransitionDrawable) imageview.getDrawable(); // drawable.startTransition(1000); drawable.reverseTransition(1000); }
效果圖:
InsetDrawable,對應標簽,主要實現drawable的內嵌,並可以設置drawable的邊距。
效果圖:
ClipDrawable,對應於標簽,它可以根據自己的Level來裁剪drawable,裁剪方向通過android:clipOrientation和android:gravity兩個屬性同時決定。drawable的level范圍是0-10000,默認是0,表示完全裁剪,10000表示完全不裁剪。
/** * LevelListDrawable 設置等級 * * @param view */ public void setClip(View view) { EditText edittest = (EditText) findViewById(R.id.et_level); String trim = edittest.getText().toString().trim(); int i = Integer.parseInt(trim); ImageView imageview = (ImageView) findViewById(R.id.iv_clip); imageview.setImageLevel(i); }
效果圖:
ScaleDrawable,對應標簽,它可以根據自己的level講指定的drawable縮放到一定的等級。
注意:
在ScaleDrawable中,drawable的level的等級會影響drawable的縮放。
/** * ScaleDrawable 設置縮放1 * * @param view */ public void setScale1(View view) { EditText mEtLevel = (EditText) findViewById(R.id.et_level); String trim = mEtLevel.getText().toString().trim(); int i = Integer.parseInt(trim); ImageView imageview = (ImageView) findViewById(R.id.iv_scale1); ScaleDrawable drawable = (ScaleDrawable) imageview.getDrawable(); drawable.setLevel(i); } /** * ScaleDrawable 設置縮放1 * * @param view */ public void setScale2(View view) { EditText mEtLevel = (EditText) findViewById(R.id.et_level); String trim = mEtLevel.getText().toString().trim(); int i = Integer.parseInt(trim); ImageView imageview = (ImageView) findViewById(R.id.iv_scale2); ScaleDrawable drawable = (ScaleDrawable) imageview.getDrawable(); drawable.setLevel(i); }
效果圖:
StateListDrawable即選擇器,對於這個大家都比較熟悉了,這裡不做介紹
NinePatchDrawable即.9格式圖片,在使用上和普通圖片一樣,在這裡不做介紹。
關鍵部分代碼如下 1、Spinnner 在布局文件中: 定義對象: private
Activity在窗口和ViewRootImpl創建後會請求WMS創建一個連接,請求WMS為其創建一個WindowState對象用來描述窗口狀態。Activity與WMS
一、Touch的三個重要方法在Android中,與觸摸事件也就是 Touch 相關的有三個重要方法,這三個方法共同完成觸摸事件的分發。public boolean dis
顯示效果: 我在參考鏈接中看到了作者的仿的qq提示框,但是在使用的時候並不是很方面,有一些不足,於是我參照Android系統AlertDialog