freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計_基于android手機平臺的音樂播放器設(shè)計-文庫吧

2025-10-28 09:56 本頁面


【正文】 容提供類DBProvider extends ContentProvider(繼承關(guān)系) 創(chuàng)建數(shù)據(jù)庫 Android 提供了標(biāo)準(zhǔn)的數(shù)據(jù)庫創(chuàng)建方式。繼承 SQLiteOpenHelper ,實現(xiàn) onCreate 和 onUpgrade 兩個方法,有個好處就是便于數(shù)據(jù)庫版本的升級,連接數(shù)據(jù)庫的算法如下: public DBHelper(Context context) {// 創(chuàng)建數(shù)據(jù)庫 super(context, DATABASE_NAME,null, DATABASE_VERSION)。 } public void onCreate(SQLiteDatabase db) {// 創(chuàng)建時調(diào)用 (DATABASE_CREATE)。 } public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// 版本更新時調(diào)用 (DROP TABLE IF EXISTS File_Table)。 onCreate(db)。 } @Override // 在 ContextProvider 運行時自動創(chuàng)建數(shù)據(jù)庫 public boolean onCreate() { dbOpenHelper= new DBHelper(getContext())。 return true。 } 數(shù)據(jù)庫如果創(chuàng)建不成功則拋出 FIleNotFoundException 異常 操作數(shù)據(jù)庫 Android 對數(shù)據(jù)庫的操作主要有插入、刪除、更新、查詢操作,在進行任何操作時都必須指定一個 Uri,才能對相應(yīng)的表進行數(shù)據(jù)操作。 //數(shù)據(jù)庫刪除操作 @Override public int delete(Uri arg0, String arg1, String[] arg2) { SQLiteDatabase db = ()。 try { (, arg1, arg2)。 } catch (Exception ex) { ()。 }return 1。 12 } @Override//數(shù)據(jù)庫插入操作 public Uri insert(Uri uri, ContentValues values) { SQLiteDatabase db = ()。 long count = 0。 try { count = (, null, values)。 } catch (Exception ex) { ()。 } if (count 0) return uri。 else return null。 } // 數(shù)據(jù)庫更新操作 @Override public int update(Uri uri, ContentValues values, String selection,String[] selectionArgs) { SQLiteDatabase db = ()。 int i = 0。 try { i = (, values, selection, null)。return i。 } catch (Exception ex) {} return 0。 } 數(shù)據(jù)顯示 程序是利用 Cursor 游標(biāo)類指向數(shù)據(jù)表中的某一項,然后進行查詢數(shù)據(jù),用 Log 日志顯示出來 @Override//數(shù)據(jù)庫查詢操作 public Cursor query(Uri uri, String[] projection, String selection,String[] selectionArgs, String sortOrder) { SQLiteDatabase db = ()。 // 依次參數(shù)為:表名,查詢字段, where語句 ,替換, group by(分組 ),having(分組條件 ),order by(排序 ) Cursor cur = (, projection, selection,selectionArgs, null, null, sortOrder)。return cur。} 13 七 播放器 系統(tǒng)功能詳細設(shè)計 播放器主界面 播放器主界面(圖 ) 圖 Android 的每一個可視化界面,都有其的唯一的布局配置文件,該文件里面有各種布局方式,和各種資源文件如圖像,文字,顏色的引用,程序在運行時,可以通過代碼對各配置文件進行讀取。這樣就可以形成不同的可視化界面和炫麗的效果。播放器主界面是一個 Activity, Android 工程在每個activity 啟動的時候會首先執(zhí)行 Oncreate()方法,如下代碼: @Override 14 Public void onCreate(Bundle savedInstanceState) { (savedInstanceState)。 setContentView()。} 該方法主要執(zhí)行界面的初始化操作, Activity 有個設(shè)置布局的方法: (layoutResID),參數(shù)為資源 ID,該 Id 在工程目錄 res/layout 下,主界面布局文件名為 play_rack。 下面為 布局文件代碼 結(jié)構(gòu)如下: ?xml version= encoding=utf8? AbsoluteLayout LinearLayout /LinearLayout SeekBar/SeekBar LinearLayout/LinearLayout /AbsoluteLayout 在絕對布局 AbsoluteLayout下嵌套兩種線性布局 LinearLayout和SeekBar,第一個 LinearLayout實現(xiàn)了標(biāo)題和歌曲名的 顯示位置,通過AbsoluteLayout布局設(shè)置 LinearLayout絕對坐標(biāo)來控制標(biāo)題的位置。每個布局內(nèi)可以放置多種 Widget(窗體部件)例如: TextViewImageButton等。每個 Widget內(nèi)有多種屬性,可以設(shè)置該 Widget的坐標(biāo),大小,背景和顏色等參數(shù)。在播放界面中,歌詞顯示為居中,實現(xiàn)方法代碼如下: LinearLayout android:orientation=horizontal android:gravity=centerandroid:layout_height=wrap_content android:layout_width=fill_parent TextView android:layout_height=wrap_content android:textColor=8deeee android:id=@+id/lrcText android:layout_width=wrap_content/TextView /LinearLayout 屬性: orientation=horizontal:此線性布局的子部件為水平方式布局 Layout_width=fill_content :布局的寬度為填滿父布局 Layout_height=wrap_content :布局的高度子由窗體的大小決定 窗體 TextView 文本 : textColor=8deeee 設(shè)置文本顯示的顏色 RGB為 8deeee TextSize為默認(rèn)大小 播放界面音軌的實現(xiàn) 播放器音軌 SeekBar(如下圖) 15 Android系統(tǒng)自帶 SeekBar(如下圖) 圖 不管是從界面外觀還是從功能上,系統(tǒng)自帶的 SeekBar往往不能滿足用戶的需要。所以我在這里自定義了一個音軌 SeekBar, 在 , SeekBar的代碼如下: SeekBar android:id=@+id/seekbar android:layout_width=245px android:layout_height=20px android:layout_x=40px android:layout_y=260px android:progressDrawable=@drawable/seekbar_style android:thumb=@drawable/thumb android:paddingLeft=18px android:paddingRight=15pxandroid:paddingTop=5px android:paddingBottom=5px android:progress=0 android:max=100 android:secondaryProgress=0 /SeekBar 上面代碼中有參數(shù) android: thumb=@drawable/thumb 為音軌游標(biāo)的圖片資源 android: progressDrawable=@drawable/seekbar_style為SeekBar條的風(fēng)格 style。引用了 drawable中的 件 ,,算法如下: ?xml version= encoding=utf8? layerlist xmlns:android= item android:id=@android:id/background shapecorners android:radius=5dip /gradient android:startColor=ff9d9e9d android:centerColor=ff5a5d5a android:centerY= android:endColor=ff747674 android:angle=270 //shape/item item android:id=@android:id/secondaryProgress clipshapecorners android:radius=5dip / 16 gradient android:startColor=80ffd300 android:centerColor=80ffb600 android:centerY= android:endColor=a0ffcb00 android:angle=270 / /shape/clip/item item android:id=@android:id/progress clipshapecorners android:radius=5dip /gradient android:startColor=ff0099CCandroid:centerColor=ff3399CC android:centerY=android:endColor=ff6699CC android:angle=270 //shape/clip/item /layerlist 配置文件中三個 Item項依次決定了 SeekBar的三層背景,從最下層的灰色到最上層的藍色。通過各種屬性設(shè)置了 SeekBar的傾斜度,兩端圓半徑,角度,中心位置,起始,中心和結(jié)束的顏色,游標(biāo)的起始位置。通過這些屬性設(shè)置,就自定義一個如上圖一的 SeekBar音軌 . 播放器最重要的一部分就是音軌與歌曲進度同步的實現(xiàn)。音軌設(shè)置了兩個 TextView用來顯示當(dāng)前歌曲播放的進度時間和 歌曲的長度 (圖 ) 圖 音軌對象 SeekBar在歌曲剛開始播放的時候調(diào)用方法(),參數(shù)傳入歌曲的長度。 (1)設(shè)置游標(biāo)的起始進度為 1。然后程序運行如下代碼: private Runnable thread_One = new Runnable() {// 線程 public void run() { int currently_Progress = () + 1000。 (currently_Progress)。 (getFileTime( ion()))。 showLrcTwo(lrc_time, lrc_word)。(thread_One, 1000)。}}。 Android的線程的開始是通過 Handler類來進行的, Handler類是線程與線程之間通信的橋梁,實現(xiàn) Runnable接口會實現(xiàn)里 面的 run方法,當(dāng)線程開始的時候, Runnable中的 run方法會向 Handler發(fā)一個 Message消息,這樣,Handler類就可以接收到 run方法發(fā)送過來的不同的消息進行不同的代碼處理。這樣就達到了各線程之間的通信。要啟動一個線程調(diào)用 Handler的方法postDelayed( Runnable, 1000)表示線程睡眠時間是 1000ms 。 17 以上代碼意思是讓播放歌曲的線程每隔 1000ms,即每 1秒對音軌的TextView重新設(shè)置時間且讓進度條前進 1秒的進度。對音軌進行刷新。這樣就實現(xiàn)了歌詞同步功能 SeekBar有一個監(jiān)聽器,該監(jiān)聽器的作用是一直保持著對進度條的監(jiān)聽,當(dāng)我們用鼠標(biāo)向 SeekBar的各位置進行點擊時,它會自動監(jiān)聽其位置,進行相應(yīng)的位置顯示。這也是進度條上
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1