上一篇: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。