在這個工程中最為重要的就是player.xml和ObjectActivity了
首先是播放器這個控制項的布局,開始我試著用各種布局都沒有能完成我要的效果,因為我用的進度顯示是自訂的seekbar似乎它預設會在上下留一定的空白,所以我最後只好用絕對布局了,因為播放器的大小是固定的而且它不依賴於父控制項的大小所以這種布局效果還不錯
player.xml<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/slidingDrawer1" android:layout_width="fill_parent" android:layout_height="fill_parent" > <LinearLayout android:layout_width="fill_parent" android:layout_height="60dp" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:baselineAligned="false" android:orientation="horizontal" > <AbsoluteLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1" android:orientation="vertical" > <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_x="0dp" android:layout_y="8dp" > <LinearLayout android:id="@+id/content" android:layout_width="wrap_content" android:layout_height="52dp" android:background="@drawable/img_player_bacakground" android:gravity="center_vertical" android:orientation="horizontal" android:visibility="visible" > <ImageButton android:id="@+id/ibn_start_suspend" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="18dip" android:background="@drawable/bnx_suspend" /> <ImageButton android:id="@+id/ibn_previous" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="18dip" android:background="@drawable/bnx_previous" /> <ImageButton android:id="@+id/ibn_next" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="18dip" android:background="@drawable/bnx_next" /> <TextView android:id="@+id/tv_songname" android:layout_width="160dp" android:layout_height="wrap_content" android:layout_marginLeft="5dip" android:layout_marginRight="5dip" android:background="@drawable/img_player_kuang" android:ellipsize="marquee" android:focusable="true" android:focusableInTouchMode="true" android:gravity="center" android:marqueeRepeatLimit="marquee_forever" android:scrollHorizontally="true" android:singleLine="true" android:textSize="16sp" /> <ImageButton android:id="@+id/ibn_mode" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/bnx_cycle" /> </LinearLayout> <ImageButton android:id="@+id/hand" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_toRightOf="@id/content" android:background="@drawable/img_arrow_left" /> </RelativeLayout> <SeekBar android:id="@+id/pb" style="@style/SeekBar" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_x="0dp" android:layout_y="-5dp" /> </AbsoluteLayout> </LinearLayout></RelativeLayout>
接下來是ObjectActivity
它繼承於Activity添加這麼一層是為了讓希望擁有這個懸浮mini播放器的類獲得而不需要有的類不需要繼承此類
最後是自訂seekbar所使用的style
看一下:
源碼下載:懸浮mini音樂播放器.zip