Android Drawableシリーズ——ClipDrawable
ClipDrawableはとてもきれいな画像Drawableで、操作も簡単です.次にコードを貼り付けて、例を通して説明します.
main.xmlファイルの内容:
[html] view plain copy print ?
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:orientation="vertical" >
android:id="@+id/image"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:src="@drawable/my_clip" />
ここではandroid:sec=「@drawable/my_clip」に重点を置き、このプロファイルを呼び出します.このプロファイルの内容は次のとおりです.
[html] view plain copy print ?
android:drawable="@drawable/test" android:clipOrientation="horizontal"
android:gravity="center">
3つのプロパティが定義されています.属性1はdrawableの画像内容です.2番目の属性は展開の方向であり,3番目の属性はよく用いられ,述べない.
これで、clipDrawableのプロファイルが作成されました.clipプロファイルを呼び出し、効果を示します.比較的簡単です.プロジェクトに感覚的なメリットを追加するのも簡単です.
次はActivityのコードです.
[java] view plain copy print ?
package cn.jason.drawable;
import java.util.Timer; import java.util.TimerTask;
import android.app.Activity;
import android.os.Bundle; import android.os.Handler;
import android.os.Message; import android.widget.ImageView;
public class ClipDrawable extends Activity {
/** Called when the activity is first created. */ @Override
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.main); ImageView imageView = (ImageView) findViewById(R.id.image);
final android.graphics.drawable.ClipDrawable drawable = (android.graphics.drawable.ClipDrawable) imageView.getDrawable();
final Handler handler = new Handler(){ @Override
public void handleMessage(Message msg) { if (msg.what == 0x1233) {
drawable.setLevel(drawable.getLevel() + 200);
} }
};
final Timer timer = new Timer(); timer.schedule(new TimerTask() {
@Override public void run() {
Message msg = new Message(); msg.what= 0x1233;
handler.sendMessage(msg); if (drawable.getLevel() >=10000) {
timer.cancel(); }
} }, 0,300);
}
}
main.xmlファイルの内容:
[html] view plain copy print ?
android:layout_width="fill_parent"
android:orientation="vertical" >
android:layout_width="fill_parent"
android:src="@drawable/my_clip"
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/image"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:src="@drawable/my_clip"
/>
</LinearLayout>
ここではandroid:sec=「@drawable/my_clip」に重点を置き、このプロファイルを呼び出します.このプロファイルの内容は次のとおりです.
[html] view plain copy print ?
android:drawable="@drawable/test"
android:gravity="center">
<?xml version="1.0" encoding="UTF-8"?>
<clip xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/test"
android:clipOrientation="horizontal"
android:gravity="center">
</clip>
3つのプロパティが定義されています.属性1はdrawableの画像内容です.2番目の属性は展開の方向であり,3番目の属性はよく用いられ,述べない.
これで、clipDrawableのプロファイルが作成されました.clipプロファイルを呼び出し、効果を示します.比較的簡単です.プロジェクトに感覚的なメリットを追加するのも簡単です.
次はActivityのコードです.
[java] view plain copy print ?
package cn.jason.drawable;
import java.util.Timer;
import android.os.Bundle;
import android.os.Message;
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.main);
final Handler handler = new Handler(){
public void handleMessage(Message msg) {
drawable.setLevel(drawable.getLevel() + 200);
}
};
final Timer timer = new Timer();
@Override
Message msg = new Message();
handler.sendMessage(msg);
timer.cancel();
}
}
}
package cn.jason.drawable;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.ImageView;
public class ClipDrawable extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageView imageView = (ImageView) findViewById(R.id.image);
final android.graphics.drawable.ClipDrawable drawable = (android.graphics.drawable.ClipDrawable) imageView.getDrawable();
final Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
if (msg.what == 0x1233) {
drawable.setLevel(drawable.getLevel() + 200);
}
}
};
final Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
Message msg = new Message();
msg.what= 0x1233;
handler.sendMessage(msg);
if (drawable.getLevel() >=10000) {
timer.cancel();
}
}
}, 0,300);
}
}
上のコードは、本プログラムのメッセージが受信された場合に動作するHandlerを定義する.特に注意する.ClipDrawableを定義する使い方はDrawableを変換します.