Android Drawable Resource学习(十一)、RotateDrawable

来源:互联网 发布:mac 查询80端口被占用 编辑:程序博客网 时间:2024/05/03 23:38

对另一个drawable资源,基于当前的level,进行旋转的drawable。

文件位置:
res/drawable/filename.xml
文件名即资源名
编译数据类型:
指向 RotateDrawable的指针。
资源引用:
In Java: R.drawable.filename
In XML: @[package:]drawable/filename
语法:
<span class="pun"><?</span><span class="pln">xml version</span><span class="pun">=</span><span class="str">"1.0"</span><span class="pln"> encoding</span><span class="pun">=</span><span class="str">"utf-8"</span><span class="pun">?></span><span class="pln"></span><span class="tag"><</span>rotate<span class="pln">    </span><span class="atn">xmlns:android</span><span class="pun">=</span><span class="atv">"http://schemas.android.com/apk/res/android"</span><span class="pln">    </span>android:drawable=""    android:visible=""    android:fromDegrees=""    android:toDegrees=""    android:pivotX=""    android:pivotY=""<span class="pln"></span><span class="tag">/></span>

元素:

<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轴的百分比


参考:
  • ScaleDrawable



示例和解释:

坐标的信息如下:


1、原始图片如下:




2、在 scale.xml文件中定义如下:

[java] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <rotate xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:drawable="@drawable/image02"  
  4.     android:visible="true"  
  5.     android:fromDegrees="-90"  
  6.     android:toDegrees="180"  
  7.     android:pivotX="50%"  
  8.     android:pivotY="50%">  
  9. </rotate>  
那么,图片的初始角度为-90。即如下:


要旋转到的角度如下:


并且是顺时针旋转。


3、那么图片将从-90到180进行旋转。level值为10000,也就是说level每加1000,即顺时针旋转270/10000*1000=27度。

可以根据显示看出来效果。

[java] view plaincopy
  1. public class MainActivity extends Activity{  
  2.     RotateDrawable rotateDrawable;  
  3.     int level=0;  
  4.     @Override  
  5.     protected void onCreate(Bundle savedInstanceState) {  
  6.         super.onCreate(savedInstanceState);  
  7.         setContentView(R.layout.activity_main);  
  8.         ImageView imageView=(ImageView)findViewById(R.id.imgView);  
  9.          rotateDrawable=(RotateDrawable)imageView.getDrawable();  
  10.          thread.start();  
  11.     }  
  12.       
  13.     Thread thread=new Thread(new Runnable() {  
  14.         public void run() {  
  15.             while (level<=10000) {  
  16.                   handler.sendEmptyMessage(0x00);  
  17.                 try {  
  18.                     Thread.sleep(2000);  
  19.                 } catch (InterruptedException e) {  
  20.                     e.printStackTrace();  
  21.                 }  
  22.             }  
  23.         }  
0 0
原创粉丝点击