前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android-MediaPlayer(3)加打碟旋转效果

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

作者头像
晨曦_LLW
发布2020-09-25 11:24:50
9700
发布2020-09-25 11:24:50
举报

上一篇:Android-MediaPlayer(2)加进度条和时间显示

先来看这个效果图吧。

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

ObjectAnimator的使用

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

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

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

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

代码语言:javascript
复制
<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进行定义和使用。

代码语言:javascript
复制
	private ImageView discsmap;//唱片
    private ImageView zhizhenmap;//指针
    private ObjectAnimator animator;//唱片动画
    private ObjectAnimator animator1;//指针动画

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

代码语言:javascript
复制
discsmap = (ImageView)findViewById(R.id.listen_changpian_img);//唱片
zhizhenmap = (ImageView)findViewById(R.id.listen_zhizhen_iv);//指针

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

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

代码语言:javascript
复制
/*
    * 打碟开始
    * */
    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轴上缩放。第三个参数表示旋转开始的角度,第四个参数表示旋转结束的角度(也就是自转一圈)。其他的代码里已经注释了,我相信你已经会用了吧。停止动画的代码更简单,代码如下:

代码语言:javascript
复制
/*
    * 打碟停止
    * */
    private void StopRecordRotation(){
        animator.end();
        animator1.end();
    }

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

这就是完成了。我是初学者-study。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-02-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ObjectAnimator的使用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档