Android RotateDrawable
RotateDrawable
用来对 Drawable
进行旋转,可以通过 setLevel()
来控制旋转的,最大值是 10000
RotateDrawable 属性
属性 | 说明 |
---|---|
android:fromDegrees | 起始的角度,,对应最低的level值,默认为 0 |
android:toDegrees | 结束角度,对应最高的level值,默认 360 |
android:pivotX | 设置参照点的x坐标,取值为 0~1,默认是 50%,即 0.5 |
android:pivotY | 设置参照点的Y坐标,取值为 0~1,默认是 50%,即 0.5 |
android:drawable | 设置位图资源 |
android:visible | 设置 drawable 是否可见 |
角度坐标系如下
范例
-
创建一个 空的 Android 项目
cn.twle.android.RotateDrawable
-
下载 /static/i/meimei_160x360.jpg 并把图片放到
res/drawable
目录 -
创建一个
RotateDrawable
资源文件res/drawable/rotate_meimei.xml
<?xml version="1.0" encoding="utf-8"?> <rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/meimei_160x360" android:fromDegrees="-180" android:pivotX="50%" android:pivotY="50%" />
-
修改
activity_main.xml
添加一个ImageView
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/img_show" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="center" android:src="@drawable/rotate_meimei" /> </LinearLayout>
-
修改
MainActivity.java
package cn.twle.android.rotatedrawable; import android.graphics.drawable.RotateDrawable; import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ImageView; import android.widget.Toast; import java.util.Timer; import java.util.TimerTask; public class MainActivity extends AppCompatActivity { private ImageView img_show; private RotateDrawable cd; private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what == 0x123) { if (cd.getLevel() >= 10000) Toast.makeText(MainActivity.this, "转完了~", Toast.LENGTH_LONG).show(); cd.setLevel(cd.getLevel() + 400); } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); img_show = (ImageView) findViewById(R.id.img_show); // 核心实现代码 cd = (RotateDrawable) img_show.getDrawable(); final Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { handler.sendEmptyMessage(0x123); if (cd.getLevel() >= 10000) { timer.cancel(); } } }, 0, 100); } }