編輯:關於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格式圖片,在使用上和普通圖片一樣,在這裡不做介紹。
android Spinner和數值選擇器使用demo
關鍵部分代碼如下 1、Spinnner 在布局文件中: 定義對象: private
android6.0 Activity(三) Activity與WMS通信過程
Activity在窗口和ViewRootImpl創建後會請求WMS創建一個連接,請求WMS為其創建一個WindowState對象用來描述窗口狀態。Activity與WMS
Android的事件分發與消費機制
一、Touch的三個重要方法在Android中,與觸摸事件也就是 Touch 相關的有三個重要方法,這三個方法共同完成觸摸事件的分發。public boolean dis
Android仿IOS UIAlertView對話框
顯示效果: 我在參考鏈接中看到了作者的仿的qq提示框,但是在使用的時候並不是很方面,有一些不足,於是我參照Android系統AlertDialog