【转】Android Drawable Resource学习(十一)、RotateDrawable

对另一个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轴的百分比
参考:
  • ScaleDrawable

 

 

示例和解释:

坐标的信息如下:

1、原始图片如下:

 

 

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

 

[java]  view plain  copy
 
  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 plain  copy
 
    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.         }  
    24.     });  
    25.       
    26.     Handler handler=new Handler(){  
    27.         public void handleMessage(Message msg) {  
    28.             Toast.makeText(MainActivity.this, level+"", 500).show();  
    29.             rotateDrawable.setLevel(level);  
    30.             level+=1000;  
    31.         };  
    32.     };  
    33. }  
      1. from:http://blog.csdn.net/lonelyroamer/article/details/8252533
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值