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

上一篇:Android-MediaPlayer(2)加進度條和時間顯示
先來看這個效果圖吧。
在這裏插入圖片描述
這個效果其實並不難。主要用到動畫。

ObjectAnimator的使用

首先你得準備兩張這樣的圖片,一張是唱片,一張是指針。正所謂巧婦難爲無米之炊,圖片我也給你放在這裏吧,圖片如下:
在這裏插入圖片描述
在這裏插入圖片描述
指針是醜了點,不過無妨,想要好看的自己去設計。下面進入正題吧。
首先,修改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()方法就可以了。然後我們在拖動的時候添加打碟暫停,鬆手後打碟開始。
這就是完成了。我是初學者-study。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章