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 是否可见

角度坐标系如下

范例


  1. 创建一个 空的 Android 项目 cn.twle.android.RotateDrawable

  2. 下载 /static/i/meimei_160x360.jpg 并把图片放到 res/drawable 目录

  3. 创建一个 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%" />
    
  4. 修改 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>
    
  5. 修改 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);
        }
    }
    

Android 基础教程

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.