对另一个drawable资源,基于当前的level,进行旋转的drawable。
- 文件位置:
-
res/drawable/filename.xml
文件名即资源名 - 编译数据类型:
- 指向
RotateDrawable
的指针。 - 资源引用:
- In Java:
R.drawable.filename
In XML:@[package:]drawable/filename
- 语法:
-
<?xml version="1.0" encoding="utf-8"?>
<rotate
xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable=""
android:visible=""
android:fromDegrees=""
android:toDegrees=""
android:pivotX=""
android:pivotY=""/>
元素:
- <rotate>
-
定义一个RotateDrawable,必须作为根元素。
属性:
xmlns:android
-
String类型。 必须的。定义XML文件的命名空间。必须是
"http://schemas.android.com/apk/res/android"
. android:drawable
-
Drawable 资源。必须的。引用一个drawable资源。
android:visible
- Boolean。是否可见。
android:fromDegrees
- 整形。 从多少的角度开始旋转
android:toDegrees
- 整形。 到多少的角度结束旋转
android:pivotX
- 百分比。 旋转的中心在图片X轴的百分比
android:visible
- 百分比。 旋转的中心在图片Y轴的百分比
-
- 参考:
示例和解释:
坐标的信息如下:
1、原始图片如下:
2、在 scale.xml文件中定义如下:
- <?xml version="1.0" encoding="utf-8"?>
- <rotate xmlns:android="http://schemas.android.com/apk/res/android"
- android:drawable="@drawable/image02"
- android:visible="true"
- android:fromDegrees="-90"
- android:toDegrees="180"
- android:pivotX="50%"
- android:pivotY="50%">
- </rotate>
那么,图片的初始角度为-90。即如下:
要旋转到的角度如下:
并且是顺时针旋转。
3、那么图片将从-90到180进行旋转。level值为10000,也就是说level每加1000,即顺时针旋转270/10000*1000=27度。
可以根据显示看出来效果。
- public class MainActivity extends Activity{
- RotateDrawable rotateDrawable;
- int level=0;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- ImageView imageView=(ImageView)findViewById(R.id.imgView);
- rotateDrawable=(RotateDrawable)imageView.getDrawable();
- thread.start();
- }
- Thread thread=new Thread(new Runnable() {
- public void run() {
- while (level<=10000) {
- handler.sendEmptyMessage(0x00);
- try {
- Thread.sleep(2000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
- });
- Handler handler=new Handler(){
- public void handleMessage(Message msg) {
- Toast.makeText(MainActivity.this, level+"", 500).show();
- rotateDrawable.setLevel(level);
- level+=1000;
- };
- };
- }
- from:http://blog.csdn.net/lonelyroamer/article/details/8252533