您的位置:首页 > 移动开发 > Android开发

Android Drawable Resource学习(十一)、RotateDrawable

2015-07-25 07:36 405 查看
对另一个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

<?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度。

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

[java] view
plaincopy

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;

};

};

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: