├── .gitignore ├── .idea ├── .name ├── compiler.xml ├── copyright │ └── profiles_settings.xml ├── encodings.xml ├── gradle.xml ├── misc.xml ├── modules.xml └── runConfigurations.xml ├── app ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── assets │ ├── demo01.mp3 │ └── demo02.mp3 │ ├── java │ └── com │ │ └── mariostudio │ │ └── rotatedrawabledemo │ │ └── MainActivity.java │ └── res │ ├── drawable │ ├── rotate_cd.xml │ ├── rotate_hander.xml │ ├── selector_next.xml │ ├── selector_pause.xml │ ├── selector_play.xml │ └── selector_previous.xml │ ├── layout │ └── activity_main.xml │ ├── mipmap-hdpi │ ├── landscape_player_btn_next_normal.png │ ├── landscape_player_btn_next_press.png │ ├── landscape_player_btn_pause_normal.png │ ├── landscape_player_btn_pause_press.png │ ├── landscape_player_btn_play_normal.png │ ├── landscape_player_btn_play_press.png │ ├── landscape_player_btn_pre_normal.png │ └── landscape_player_btn_pre_press.png │ ├── mipmap-mdpi │ └── ic_launcher.png │ ├── mipmap-xhdpi │ ├── box_background.png │ ├── box_handbar.png │ └── cd.png │ ├── mipmap-xxhdpi │ └── ic_launcher.png │ ├── mipmap-xxxhdpi │ └── ic_launcher.png │ ├── values-v21 │ └── styles.xml │ ├── values-w820dp │ └── dimens.xml │ └── values │ ├── colors.xml │ ├── dimens.xml │ ├── strings.xml │ └── styles.xml ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | -------------------------------------------------------------------------------- /.idea/.name: -------------------------------------------------------------------------------- 1 | RotateDrawableDemo -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 22 | 23 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | Android 12 | 13 | 14 | Android > Lint > Correctness 15 | 16 | 17 | Java 18 | 19 | 20 | Java language level migration aidsJava 21 | 22 | 23 | 24 | 25 | Android 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 47 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 23 5 | buildToolsVersion "23.0.3" 6 | 7 | defaultConfig { 8 | applicationId "com.mariostudio.rotatedrawabledemo" 9 | minSdkVersion 14 10 | targetSdkVersion 23 11 | versionCode 1 12 | versionName "1.0" 13 | } 14 | buildTypes { 15 | release { 16 | minifyEnabled false 17 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 18 | } 19 | } 20 | } 21 | 22 | dependencies { 23 | compile fileTree(dir: 'libs', include: ['*.jar']) 24 | testCompile 'junit:junit:4.12' 25 | compile 'com.android.support:appcompat-v7:23.2.0' 26 | compile 'com.android.support:design:23.2.0' 27 | } 28 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in E:\android-sdk_r24.3.2-windows/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 11 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/assets/demo01.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WuLiFei/RotateDrawableDemo/f0bf58e17e956192fcb9817a171b08492cc4766f/app/src/main/assets/demo01.mp3 -------------------------------------------------------------------------------- /app/src/main/assets/demo02.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WuLiFei/RotateDrawableDemo/f0bf58e17e956192fcb9817a171b08492cc4766f/app/src/main/assets/demo02.mp3 -------------------------------------------------------------------------------- /app/src/main/java/com/mariostudio/rotatedrawabledemo/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.mariostudio.rotatedrawabledemo; 2 | 3 | import android.animation.Animator; 4 | import android.animation.AnimatorListenerAdapter; 5 | import android.animation.ValueAnimator; 6 | import android.annotation.TargetApi; 7 | import android.app.Activity; 8 | import android.content.res.AssetFileDescriptor; 9 | import android.media.MediaPlayer; 10 | import android.os.Build; 11 | import android.os.Bundle; 12 | import android.os.Handler; 13 | import android.os.Message; 14 | import android.view.View; 15 | import android.view.Window; 16 | import android.view.WindowManager; 17 | import android.widget.ImageView; 18 | 19 | import java.io.IOException; 20 | 21 | public class MainActivity extends Activity implements View.OnClickListener, MediaPlayer.OnPreparedListener, MediaPlayer.OnCompletionListener{ 22 | 23 | private final int Duration = 600; // 动画时长 24 | 25 | private AnimatorState state = AnimatorState.State_Stop; //动画状态 26 | private AudioState audioState = AudioState.STATE_STOP; //音乐播放器状态 27 | 28 | private ImageView btnPre,btnPlay, btnNext; 29 | private ImageView cdBox, handerd; 30 | 31 | private MediaPlayer mediaPlayer; 32 | 33 | private boolean flag = false; //标记,控制唱片旋转 34 | 35 | private String names[] = {"demo01.mp3", "demo02.mp3"}; 36 | private int position = 0; 37 | 38 | @Override 39 | protected void onCreate(Bundle savedInstanceState) { 40 | super.onCreate(savedInstanceState); 41 | setContentView(R.layout.activity_main); 42 | 43 | //判断SDK版本是否大于等于19,大于就让他显示,小于就要隐藏,不然低版本会多出来一个 44 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 45 | setTranslucentStatus(true); 46 | //还有设置View的高度,因为每个型号的手机状态栏高度都不相同 47 | } 48 | initAllViews(); 49 | } 50 | 51 | private void prepareMusic() { 52 | //从Assets中获取音频资源 53 | cdBox.getDrawable().setLevel(0); 54 | AssetFileDescriptor fileDescriptor; 55 | try { 56 | fileDescriptor = this.getAssets().openFd(names[position]); 57 | mediaPlayer = new MediaPlayer(); 58 | mediaPlayer.setOnPreparedListener(this); 59 | mediaPlayer.setOnCompletionListener(this); 60 | mediaPlayer.setDataSource(fileDescriptor.getFileDescriptor(), fileDescriptor.getStartOffset(), fileDescriptor.getLength()); 61 | mediaPlayer.prepareAsync(); 62 | } catch (IOException e) { 63 | e.printStackTrace(); 64 | } 65 | } 66 | 67 | @TargetApi(19) 68 | private void setTranslucentStatus(boolean on) { 69 | Window win = getWindow(); 70 | WindowManager.LayoutParams winParams = win.getAttributes(); 71 | final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS; 72 | if (on) { 73 | winParams.flags |= bits; 74 | } else { 75 | winParams.flags &= ~bits; 76 | } 77 | win.setAttributes(winParams); 78 | } 79 | 80 | private void initAllViews() { 81 | cdBox = (ImageView) findViewById(android.R.id.progress); 82 | handerd = (ImageView) findViewById(android.R.id.background); 83 | 84 | btnPre = (ImageView) findViewById(android.R.id.button1); 85 | btnPlay = (ImageView) findViewById(android.R.id.button2); 86 | btnNext = (ImageView) findViewById(android.R.id.button3); 87 | btnPre.setOnClickListener(this); 88 | btnPlay.setOnClickListener(this); 89 | btnNext.setOnClickListener(this); 90 | 91 | new MyThread().start(); 92 | } 93 | 94 | @Override 95 | public void onClick(View view) { 96 | // 一切按键都必须在动画完成的状态下才能被触发 97 | if(state == AnimatorState.State_Stop) { 98 | switch (view.getId()) { 99 | case android.R.id.button1: 100 | flag = false; 101 | stop(-1); 102 | break; 103 | case android.R.id.button2: 104 | if(audioState != AudioState.STATE_PLAYING) { 105 | if(audioState == AudioState.STATE_STOP) { 106 | prepareMusic(); 107 | } else { 108 | start(); 109 | } 110 | } else { 111 | pause(); 112 | } 113 | break; 114 | case android.R.id.button3: 115 | flag = false; 116 | stop(1); 117 | break; 118 | default: 119 | break; 120 | } 121 | } 122 | } 123 | 124 | /** 125 | * 开始动画 126 | * */ 127 | private void start() { 128 | ValueAnimator animator = ValueAnimator.ofInt(0, 10000); 129 | animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { 130 | 131 | @Override 132 | public void onAnimationUpdate(ValueAnimator animation) { 133 | int level = (int) animation.getAnimatedValue(); 134 | handerd.getDrawable().setLevel(level); 135 | } 136 | }); 137 | 138 | animator.addListener(new AnimatorListenerAdapter() { 139 | 140 | @Override 141 | public void onAnimationStart(Animator animation) { 142 | super.onAnimationStart(animation); 143 | state = AnimatorState.State_Playing; 144 | } 145 | 146 | @Override 147 | public void onAnimationEnd(Animator animation) { 148 | super.onAnimationEnd(animation); 149 | state = AnimatorState.State_Stop; 150 | audioStart(); 151 | } 152 | }); 153 | animator.setDuration(Duration); 154 | animator.start(); 155 | } 156 | 157 | private void setAudioState(AudioState audioState) { 158 | this.audioState = audioState; 159 | if(audioState == AudioState.STATE_PLAYING) { 160 | btnPlay.setImageResource(R.drawable.selector_pause); 161 | } else { 162 | btnPlay.setImageResource(R.drawable.selector_play); 163 | } 164 | } 165 | 166 | /** 167 | * 暂停动画 168 | * */ 169 | private void pause() { 170 | ValueAnimator animator01 = ValueAnimator.ofInt(10000, 0); 171 | animator01.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { 172 | 173 | @Override 174 | public void onAnimationUpdate(ValueAnimator animation) { 175 | int level = (int) animation.getAnimatedValue(); 176 | handerd.getDrawable().setLevel(level); 177 | } 178 | }); 179 | 180 | animator01.addListener(new AnimatorListenerAdapter() { 181 | 182 | @Override 183 | public void onAnimationStart(Animator animation) { 184 | super.onAnimationStart(animation); 185 | state = AnimatorState.State_Playing; 186 | audioPause(); 187 | } 188 | 189 | @Override 190 | public void onAnimationEnd(Animator animation) { 191 | super.onAnimationEnd(animation); 192 | state = AnimatorState.State_Stop; 193 | } 194 | }); 195 | animator01.setDuration(Duration); 196 | animator01.start(); 197 | } 198 | 199 | /** 200 | * 停止动画 , 主要用于切歌 201 | * */ 202 | private void stop(final int type) { 203 | if(audioState == AudioState.STATE_PLAYING) { 204 | ValueAnimator animator01 = ValueAnimator.ofInt(10000, 0); 205 | animator01.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { 206 | 207 | @Override 208 | public void onAnimationUpdate(ValueAnimator animation) { 209 | int level = (int) animation.getAnimatedValue(); 210 | handerd.getDrawable().setLevel(level); 211 | } 212 | }); 213 | 214 | animator01.addListener(new AnimatorListenerAdapter() { 215 | 216 | @Override 217 | public void onAnimationStart(Animator animation) { 218 | super.onAnimationStart(animation); 219 | audioStop(); 220 | cdBox.getDrawable().setLevel(0); 221 | state = AnimatorState.State_Playing; 222 | } 223 | 224 | @Override 225 | public void onAnimationEnd(Animator animation) { 226 | super.onAnimationEnd(animation); 227 | state = AnimatorState.State_Stop; 228 | switch (type) { 229 | case -1: 230 | audioPrevious(); 231 | break; 232 | case 0: 233 | audioStop(); 234 | break; 235 | case 1: 236 | audioNext(); 237 | break; 238 | } 239 | } 240 | }); 241 | animator01.setDuration(Duration); 242 | animator01.start(); 243 | } else { 244 | audioStop(); 245 | switch (type) { 246 | case -1: 247 | audioPrevious(); 248 | break; 249 | case 0: 250 | audioStop(); 251 | break; 252 | case 1: 253 | audioNext(); 254 | break; 255 | } 256 | } 257 | } 258 | 259 | @Override 260 | public void onCompletion(MediaPlayer mp) { 261 | stop(1); 262 | } 263 | 264 | @Override 265 | public void onPrepared(MediaPlayer mediaPlayer) { 266 | setAudioState(AudioState.STATE_PAUSE); 267 | start(); 268 | } 269 | 270 | /** 271 | * 动画状态 272 | * */ 273 | public enum AnimatorState { 274 | State_Stop, 275 | State_Playing 276 | } 277 | 278 | /** 279 | * 音乐停止 280 | * */ 281 | private void audioStop() { 282 | if(null != mediaPlayer && audioState != AudioState.STATE_STOP) { 283 | setAudioState(AudioState.STATE_STOP); 284 | mediaPlayer.stop(); 285 | flag = false; 286 | } 287 | } 288 | 289 | /** 290 | * 音乐暂停 291 | * */ 292 | private void audioPause() { 293 | if(mediaPlayer != null && audioState == AudioState.STATE_PLAYING) { 294 | setAudioState(AudioState.STATE_PAUSE); 295 | mediaPlayer.pause(); 296 | flag = false; 297 | } 298 | } 299 | 300 | /** 301 | * 音乐播放 302 | * */ 303 | private void audioStart() { 304 | if(mediaPlayer != null && (audioState == AudioState.STATE_PAUSE || audioState == AudioState.STATE_PREPARE)) { 305 | setAudioState(AudioState.STATE_PLAYING); 306 | mediaPlayer.start(); 307 | flag = true; 308 | } else { 309 | if(mediaPlayer == null) { 310 | prepareMusic(); 311 | } 312 | } 313 | } 314 | 315 | /** 316 | * 上一首 317 | * */ 318 | private void audioPrevious() { 319 | if(audioState == AudioState.STATE_STOP) { 320 | position --; 321 | if(position < 0) { 322 | position = names.length - 1; 323 | } 324 | if(mediaPlayer != null) { 325 | mediaPlayer.release(); 326 | mediaPlayer = null; 327 | } 328 | prepareMusic(); 329 | } 330 | } 331 | 332 | /** 333 | * 下一首 334 | * */ 335 | private void audioNext() { 336 | if(audioState == AudioState.STATE_STOP) { 337 | position ++; 338 | if(position >= names.length) { 339 | position = 0; 340 | } 341 | if(mediaPlayer != null) { 342 | mediaPlayer.release(); 343 | mediaPlayer = null; 344 | } 345 | prepareMusic(); 346 | } 347 | } 348 | 349 | public enum AudioState { 350 | STATE_STOP, 351 | STATE_PAUSE, 352 | STATE_PREPARE, 353 | STATE_PLAYING 354 | } 355 | 356 | class MyThread extends Thread { 357 | 358 | @Override 359 | public void run() { 360 | super.run(); 361 | try { 362 | while(true) { 363 | Thread.sleep(50); 364 | if(flag) { 365 | //只有在flag==true的情况下才会对唱片进行旋转操作 366 | handler.sendMessage(new Message()); 367 | } 368 | } 369 | } catch (InterruptedException e) { 370 | e.printStackTrace(); 371 | } 372 | } 373 | } 374 | 375 | Handler handler = new Handler() { 376 | 377 | @Override 378 | public void handleMessage(Message msg) { 379 | super.handleMessage(msg); 380 | int level = cdBox.getDrawable().getLevel(); 381 | level = level + 200; 382 | if(level > 10000) { 383 | level = level - 10000; 384 | } 385 | cdBox.getDrawable().setLevel(level); 386 | } 387 | }; 388 | } 389 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rotate_cd.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rotate_hander.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/selector_next.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/selector_pause.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/selector_play.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/selector_previous.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 13 | 17 | 18 | 22 | 23 | 29 | 30 | 35 | 36 | 37 | 41 | 42 | 48 | 49 | 54 | 55 | 60 | 61 | 66 | 67 | 68 | 72 | 73 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/landscape_player_btn_next_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WuLiFei/RotateDrawableDemo/f0bf58e17e956192fcb9817a171b08492cc4766f/app/src/main/res/mipmap-hdpi/landscape_player_btn_next_normal.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/landscape_player_btn_next_press.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WuLiFei/RotateDrawableDemo/f0bf58e17e956192fcb9817a171b08492cc4766f/app/src/main/res/mipmap-hdpi/landscape_player_btn_next_press.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/landscape_player_btn_pause_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WuLiFei/RotateDrawableDemo/f0bf58e17e956192fcb9817a171b08492cc4766f/app/src/main/res/mipmap-hdpi/landscape_player_btn_pause_normal.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/landscape_player_btn_pause_press.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WuLiFei/RotateDrawableDemo/f0bf58e17e956192fcb9817a171b08492cc4766f/app/src/main/res/mipmap-hdpi/landscape_player_btn_pause_press.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/landscape_player_btn_play_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WuLiFei/RotateDrawableDemo/f0bf58e17e956192fcb9817a171b08492cc4766f/app/src/main/res/mipmap-hdpi/landscape_player_btn_play_normal.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/landscape_player_btn_play_press.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WuLiFei/RotateDrawableDemo/f0bf58e17e956192fcb9817a171b08492cc4766f/app/src/main/res/mipmap-hdpi/landscape_player_btn_play_press.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/landscape_player_btn_pre_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WuLiFei/RotateDrawableDemo/f0bf58e17e956192fcb9817a171b08492cc4766f/app/src/main/res/mipmap-hdpi/landscape_player_btn_pre_normal.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/landscape_player_btn_pre_press.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WuLiFei/RotateDrawableDemo/f0bf58e17e956192fcb9817a171b08492cc4766f/app/src/main/res/mipmap-hdpi/landscape_player_btn_pre_press.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WuLiFei/RotateDrawableDemo/f0bf58e17e956192fcb9817a171b08492cc4766f/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/box_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WuLiFei/RotateDrawableDemo/f0bf58e17e956192fcb9817a171b08492cc4766f/app/src/main/res/mipmap-xhdpi/box_background.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/box_handbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WuLiFei/RotateDrawableDemo/f0bf58e17e956192fcb9817a171b08492cc4766f/app/src/main/res/mipmap-xhdpi/box_handbar.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/cd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WuLiFei/RotateDrawableDemo/f0bf58e17e956192fcb9817a171b08492cc4766f/app/src/main/res/mipmap-xhdpi/cd.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WuLiFei/RotateDrawableDemo/f0bf58e17e956192fcb9817a171b08492cc4766f/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WuLiFei/RotateDrawableDemo/f0bf58e17e956192fcb9817a171b08492cc4766f/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/values-v21/styles.xml: -------------------------------------------------------------------------------- 1 | > 2 | 3 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/values-w820dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 64dp 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 16dp 5 | 16dp 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | RotateDrawableDemo 3 | Settings 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 15 | 16 |