Android-MediaPlayer(3)加打碟旋转效果

简介: Android-MediaPlayer(3)加打碟旋转效果

先来看这个效果图吧.

2019022821525288.gif


这个效果其实并不难。主要用到动画。


ObjectAnimator的使用


首先你得准备两张这样的图片,一张是唱片,一张是指针。正所谓巧妇难为无米之炊,图片我也给你放在这里吧,图片如下:



20190228220017528.png

20190228220036234.png


指针是丑了点,不过无妨,想要好看的自己去设计。下面进入正题吧。

首先,修改activity_main.xml文件,将这个唱片和指针放在中间。


我们用一个相对布局来包裹两个图片并排版调整一下。代码如下:

<RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:layout_weight="1">
        <ImageView
            android:id="@+id/listen_changpian_img"
            android:layout_width="250dp"
            android:layout_height="250dp"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:src="@mipmap/play_page_disc" />
        <ImageView
            android:id="@+id/listen_zhizhen_iv"
            android:layout_width="150dp"
            android:layout_height="200dp"
            android:layout_centerHorizontal="true"
            android:src="@mipmap/play_page_needles" />
    </RelativeLayout>

在上一篇中,布局文件中留了一个空白的LinearLayout布局,把它修改成RelativeLayout布局,并在里面添加这两个图片。(应该不需要我把所有布局代码都贴上吧?需要的话评论一下,我后面再加上)。


然后我们进到MainActivity进行定义和使用。

  private ImageView discsmap;//唱片
    private ImageView zhizhenmap;//指针
    private ObjectAnimator animator;//唱片动画
    private ObjectAnimator animator1;//指针动画


首先定义两个图片,两个动画。


discsmap = (ImageView)findViewById(R.id.listen_changpian_img);//唱片
zhizhenmap = (ImageView)findViewById(R.id.listen_zhizhen_iv);//指针

然后找到这两个图片。然后定义两个方法,启动动画、停止动画。

先来看看启动动画,代码如下:

/*
    * 打碟开始
    * */
    private void RecordRotation(){
        //唱片动画
        animator = ObjectAnimator.ofFloat(discsmap,"rotation",0f,360.0f);
        animator.setDuration(10000);//旋转时间
        animator.setInterpolator(new LinearInterpolator());//匀速
        animator.setRepeatCount(-1);//设置动画重复次数(-1代表一直转)
        animator.setRepeatMode(ValueAnimator.RESTART);//动画重复模式
        animator.start();//动画启动
        //指针动画
        animator1 = ObjectAnimator.ofFloat(zhizhenmap,"rotation",-60f,0.0f);
        animator1.setDuration(900);//旋转时间
        animator1.setRepeatCount(0);//就一下
        animator1.start();//动画启动
    }

解释一下:

**ObjectAnimator.ofFloat(discsmap,“rotation”,0f,360.0f)**中有四个参数。


第一个值表示你要启动动画的图片实例,第二个值代表动画效果是什么,rotation表示旋转动画:围绕Z轴旋转(如果你不理解什么是Z轴的话,你就当它是自转就好),rotationX旋转动画:围绕X轴旋转,rotationY旋转动画:围绕Y轴旋转,alpha表示透明度动画,translationX平移动画:在X轴上平移,translationY平移动画:在Y轴上平移,scaleX缩放动画:在X轴上缩放,scaleY缩放动画:在Y轴上缩放。第三个参数表示旋转开始的角度,第四个参数表示旋转结束的角度(也就是自转一圈)。其他的代码里已经注释了,我相信你已经会用了吧。停止动画的代码更简单,代码如下:


/*
    * 打碟停止
    * */
    private void StopRecordRotation(){
        animator.end();
        animator1.end();
    }


一目了然,然后我们只需要在你点击播放按钮的事件下面加上RecordRotation()方法,在暂停和停止的点击事件下面加上StopRecordRotation()方法就可以了。然后我们在拖动的时候添加打碟暂停,松手后打碟开始。

相关文章
|
9月前
|
XML Java Android开发
Android Studio App开发之对图片进行简单加工(包括放缩,旋转等等 附源码)
Android Studio App开发之对图片进行简单加工(包括放缩,旋转等等 附源码)
203 0
|
9月前
|
API Android开发 开发者
【Android App】Vulkan实现宇宙中旋转雷达动画效果(附源码和原始视频 超详细必看)
【Android App】Vulkan实现宇宙中旋转雷达动画效果(附源码和原始视频 超详细必看)
316 1
|
9月前
|
XML 小程序 Java
【Android App】给三维魔方贴图以及旋转动画讲解和实战(附源码和演示视频 超详细必看)
【Android App】给三维魔方贴图以及旋转动画讲解和实战(附源码和演示视频 超详细必看)
182 0
|
9月前
|
XML Java Android开发
Android App事件交互中辨别缩放与旋转手指的讲解与实战(附源码 可直接使用)
Android App事件交互中辨别缩放与旋转手指的讲解与实战(附源码 可直接使用)
148 0
|
前端开发 Android开发 开发者
Android平台RTSP、RTMP播放端如何实现YUV或ARGB数据按设定角度旋转
做音视频RTSP或RTMP直播播放器的时候,不免会遇到这样的诉求,实时播放或快照的时候,由于前端摄像头安装角度不一定是正向,导致播放或快照的时候,视频view显示的画面是呈90° 180°甚至270°旋转的。
188 0
|
Android开发
Android 屏幕发生旋转对应的生命周期发生变化解析
Android 屏幕发生旋转对应的生命周期发生变化解析
193 0
|
XML Android开发 数据格式
Android 图片Loading旋转动画效果
用场景:在数据请求或者一些加载的页面中,总需要一些过度的动画效果,很多时候我们都可以在图片中间加一个loading的旋转图片,以前也做过,今天做的时候噼里啪啦敲了半天结果运行没效果,所以今天总结下这个啷个做的。
|
Java Android开发
Android 7.1 解决开机动画旋转问题
Android 7.1 解决开机动画旋转问题
234 0
Android 7.1 解决开机动画旋转问题
|
Android开发
关闭安卓系统导航栏右下角自动旋转按钮
关闭安卓系统导航栏右下角自动旋转按钮
456 0
|
存储 Java Android开发
Android OpenGL ES(六)----进入三维在代码中创建投影矩阵和旋转矩阵
Android OpenGL ES(六)----进入三维在代码中创建投影矩阵和旋转矩阵
205 0
Android OpenGL ES(六)----进入三维在代码中创建投影矩阵和旋转矩阵

热门文章

最新文章

  • 1
    如何修复 Android 和 Windows 不支持视频编解码器的问题?
  • 2
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 3
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
  • 4
    【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
  • 5
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
  • 6
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 7
    Android经典面试题之Kotlin中Lambda表达式和匿名函数的区别
  • 8
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 9
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
  • 10
    Android 13 SystemUI 启动流程
  • 1
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    23
  • 2
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    21
  • 3
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
    52
  • 4
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    35
  • 5
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
    70
  • 6
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    111
  • 7
    Android经典面试题之Kotlin中Lambda表达式和匿名函数的区别
    29
  • 8
    如何修复 Android 和 Windows 不支持视频编解码器的问题?
    264
  • 9
    【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
    75
  • 10
    【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
    36