




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第十章高級編程10.1Notification的使用10.5動畫10.3多媒體10.2攝像頭與相冊10.4MaterialDesign體驗(yàn)10.6小結(jié)8.7小結(jié)10.1Notification的使用通知(Notification)是Android系統(tǒng)提供的一種具有全局效果的通知功能,可以在系統(tǒng)通知欄中顯示。當(dāng)APP向系統(tǒng)發(fā)出通知時它將先以圖標(biāo)的形式顯示在通知欄中。用戶可以下拉通知欄查看通知的詳細(xì)信息。通知欄和抽屜式通知欄均是由系統(tǒng)控制,用戶可以隨時查看。想要了解通知的基本概念我們先來看一下通知的使用方法。通知的創(chuàng)建比較靈活,可以在活動中創(chuàng)建也可以在廣播接收器中創(chuàng)建,當(dāng)然也可以在我們上一章學(xué)習(xí)的服務(wù)中創(chuàng)建,相比后兩種創(chuàng)建方式,在活動中創(chuàng)建通知的情況比較少見,一般只有當(dāng)程序進(jìn)入后臺執(zhí)行時才會需要這種類型的通知。10.1Notification的使用Android8.0系統(tǒng)之后,Google推出了通知渠道的概念。通知渠道是開發(fā)人員在創(chuàng)建通知的時候?yàn)槊總€通知指定的渠道,你也可以理解成是通知類型。屬于同一通知渠道的通知可以進(jìn)行統(tǒng)一管理。創(chuàng)建的方法也不難,首先創(chuàng)建NotificationChannel對象,指定Channel的id、name和通知的重要程度,代碼如下所示:然后使用NotificationMannager的createNotificationChannel方法來添加Channel,代碼如下所示:NotificationChannelchannel=newNotificationChannel("channel_id","channel_name",NotificationManager.IMPORTANCE_DEFAULT);getNotificationManager().createNotificationChannel(channel);運(yùn)行程序點(diǎn)擊SENDSERVICE按鈕,可以系統(tǒng)狀態(tài)來左邊看到小圖標(biāo)并且從下拉通知狀態(tài)來可以看到通知的詳細(xì)信息,如右圖想要實(shí)現(xiàn)通知信息的點(diǎn)擊效果我們還需要在代碼中進(jìn)行相應(yīng)設(shè)定,這就是新的概念PendingIntent。PendingIntent類似于Intent,但是與Intent傾向于立即執(zhí)行某個動作的操作不同,PendingIntent更傾向于在某個合適的實(shí)際去執(zhí)行某個動作,也可以理解成延遲執(zhí)行的Intent。用法很簡單,PendingIntent提供了幾個靜態(tài)方法來獲取實(shí)例,包括getActivity()方法、getBroadcast()方法以及getService()方法。10.1Notification的使用10.2攝像頭與相冊10.2.1調(diào)用攝像頭首先創(chuàng)建File對象用于存放攝像頭拍下的圖片,并將拍攝到的圖片命名為output_image.jpg存放于手機(jī)SD卡的應(yīng)用關(guān)聯(lián)混村目錄下,通過調(diào)用getExternalCacheDir()方法得到這個目錄。接下來構(gòu)建Intent對象,并通過Intent對象的action指定android.media.action.IMAGE_CAPTURE隱式啟動攝像機(jī),在調(diào)用Intent的putExtra方法指定圖片輸出路徑。Google對Android高版本使用用戶數(shù)據(jù)的權(quán)限越來越嚴(yán),因此本例中涉及到保存到SD卡的權(quán)限以及使用攝像機(jī)的兩個權(quán)限需要申請運(yùn)行時權(quán)限。10.2攝像頭與相冊10.2.2相冊使用在openAlbm()方法中,我們先構(gòu)建出隱式Intetn對象,并將它的action指定為ent.GRT_CONTENT。為這個Intent對象設(shè)置必要的參數(shù),然后調(diào)用數(shù)據(jù)回傳的啟動方式startActivityForResult()方法啟動。當(dāng)我們從相冊選擇完照片回到onActivityResult()方法時會根據(jù)整形常量選擇不同的分支處理圖片。接下來根據(jù)手機(jī)Android系統(tǒng)的版創(chuàng)建了兩個方法handleImageHigh()和handleImageBefor()方法,分別用來處理不同AndroidSDK版本的圖片。MediaPlayer是用于播放音頻和視頻的,它支持多種格式音頻文件(3gp、mp4),并提供了非常全面的控制方法。10.3多媒體方法名稱功能描述setDataSource()設(shè)置要播放的音頻文件的位置prepare()在開始播放之前調(diào)用這個方法完成準(zhǔn)備工作start()開始或繼續(xù)播放音頻pause()暫停播放音頻reset()將MediaPlayer對象重置到剛剛創(chuàng)建的狀態(tài)seekTo()從指定位置開始播放音頻stop()停止播放音頻,調(diào)用該方法后MediaPlayer對象無法在播放音頻release()釋放掉與MediaPlayer對象相關(guān)的資源isPlaying()判斷當(dāng)前MediaPlayer是否正在播放音頻getDuration獲取載入的音頻文件的時長…………MediaPlayer常用方法MediaPlayer接收音頻類型有很多,其中有四種較為常用的類型:AudioManager.STREAM_MUSIC(音樂)AudioManager.STREAM_RING(響鈴)AudioManager.STREAM_ALARM(鬧鐘)AudioManager.STREAM_NOTIFICTION(提示音)音頻類型不同占據(jù)的內(nèi)存空間也不同,音頻時間越短占的內(nèi)存越小MediaPlayermediaPlayer=newMediaPlayer();mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);10.3多媒體設(shè)置聲音流類型設(shè)置數(shù)據(jù)源有三種方式,分別是播放應(yīng)用自帶的音頻文件、播放SD卡中的音頻文件、播放網(wǎng)絡(luò)音頻文件。10.3多媒體mediaPlayer.create(this,R.raw.xxx);mediaPlayer.setDataSource("mnt/sdcard/xxx.mp3");mediaPlayer.setDataSource("http://www.xxx.mp3");應(yīng)用程序自帶音頻文件SD卡中音頻文件網(wǎng)絡(luò)音頻文件10.3.2VideoView播放視頻播放視頻文件與播放音頻文件類似,視頻文件需要使用視覺組件將影像展示出來。在Android中主要使用VideoView組件播放視頻。它將視頻的顯示和控制集于一身,借助這個控件就可以完成簡易的視頻播放器。10.3多媒體方法名稱功能描述setVideoPath()設(shè)置要播放的視頻文件的位置start()開始或繼續(xù)播放視頻pause()暫停播放視頻resume()將視頻重新開始播放seetTo()從指定位置開始播放視頻isPlaying()判斷當(dāng)前是否正在播放視頻getDuration()獲取載入的視頻文件的時長VideoView常用方法創(chuàng)建VideoView視頻播放為VideoView添加控制器<VideoViewandroid:id="@+id/videview"android:layout_width="match_parent"android:layout_height="wrap_content"/>10.3多媒體VideoViewvideoView=(VideoView)findViewById(R.id.videview);//播放本視頻
videoView.setVideoPath("xxxx");//加載網(wǎng)絡(luò)視頻
videoView.setVideoURI(Uri.parse("https://xxxx"));videoView.start();使用VideoView播放視頻時可以添加一個控制器MediaController,這是一個包含美麗播放器控件的視圖,包含一些典型的按鈕,像播放/暫停、倒帶、快進(jìn)與進(jìn)度華東其。它管理媒體播放器的狀態(tài)以保持控件的同步,示例代碼如下所示:MediaControllercontroller=newMediaController(context);//為VideoView綁定控制器
videoView.setMediaController(controller);10.3多媒體10.4.1什么是MaterialDesignMaterialDesign是由Google的設(shè)計(jì)工程師們基于傳統(tǒng)優(yōu)秀的設(shè)計(jì)原則,結(jié)合豐富的創(chuàng)意和科學(xué)技術(shù)所開發(fā)的一套全新的界面設(shè)計(jì)語言,包含了視覺、運(yùn)動、互動效果等特性。為了做出表率,Google從Android5.0系統(tǒng)開始,就將所有內(nèi)置的應(yīng)用都使用MaterialDesign風(fēng)格進(jìn)行設(shè)計(jì)。10.4MaterialDesign體驗(yàn)10.4.2ToolbarToolbar控件是由appcompat-v7庫提供的。添加控件的時候需要為Toolbar制定一個id,并將它的寬度設(shè)置為match_parent,高度設(shè)置為?attr/actionBarSize即ActionBar高度。10.4MaterialDesign體驗(yàn)<FrameLayoutxmlns:android="/apk/res/android"xmlns:app="/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"><android.support.v7.widget.Toolbarandroid:id="@+id/tool_bar"android:layout_width="match_parent"android:layout_height="?attr/actionBarSize"android:background="?attr/colorPrimary"android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"app:popupTheme="@style/ThemeOverlay.AppCompat.Light"></android.support.v7.widget.Toolbar></FrameLayout>不過只有一個標(biāo)題的Toolbar看起來太單調(diào)了,我們還可以再添加一些action按鈕來讓Toolbar更加豐富一些。創(chuàng)建一個toolbar.xml菜單文件,并編寫如下代碼:10.4MaterialDesign體驗(yàn)<menuxmlns:android="/apk/res/android"xmlns:app="/apk/res-auto"><itemandroid:id="@+id/backup"android:icon="@mipmap/ic_backup"android:title="Bakup"app:showAsAction="always"/><itemandroid:id="@+id/friend"android:icon="@mipmap/ic_friends"android:title="Friends"app:showAsAction="ifRoom"/><itemandroid:id="@+id/mail"android:icon="@mipmap/ic_mail"android:title="Mail"app:showAsAction="never"/></menu>最后在Activity中編寫如下代碼來啟用Toolbar和創(chuàng)建的菜單:10.4MaterialDesign體驗(yàn)publicclassMainActivityextendsAppCompatActivity{……@OverridepublicbooleanonCreateOptionsMenu(Menumenu){getMenuInflater().inflate(R.menu.toolbar,menu);returntrue;}@OverridepublicbooleanonOptionsItemSelected(MenuItemitem){switch(item.getItemId()){caseR.id.backup:Toast.makeText(this,"YouclickBackup",Toast.LENGTH_SHORT).show();break;caseR.id.mail:……}returntrue;}}10.4.3活動菜單活動菜單是MaterialDesign中最常見的效果之一,借助Google提供的各種工具,我們可以輕松的實(shí)現(xiàn)炫酷的活動菜單效果。DrawerLayout使用NavigationView的使用10.4MaterialDesign體驗(yàn)在Android開發(fā)中,避免不了用到動畫,Android中的動畫分為補(bǔ)間動畫和逐幀動畫兩種。10.5動畫補(bǔ)間動畫通過對View中內(nèi)容進(jìn)行一系列的圖形變換來實(shí)現(xiàn)動畫效果,其中圖形變化包括平移、縮放、旋轉(zhuǎn)、改變透明度等。按照事先準(zhǔn)備好的靜態(tài)圖像順序播放的,利用人眼的“視覺暫留”原理,給用戶造成動畫的錯覺。逐幀動畫10.5.1補(bǔ)間動畫在Android中,提供了四種補(bǔ)間動畫:透明度漸變動畫(AlphaAnimation)旋轉(zhuǎn)動畫(RotateAnimation)縮放動畫(ScaleAnimation)平移動畫(TranslateAnimation)10.5動畫透明度漸變動畫(AlphaAnimation)透明度漸變動畫是通過改變View組件透明度來實(shí)現(xiàn)的漸變效果。它主要通過為動畫指定開始時的透明度、結(jié)束時的透明度以及動畫持續(xù)時間來創(chuàng)建動畫。10.5動畫10.5動畫<?xmlversion="1.0"encoding="utf-8"?><setxmlns:android="/apk/res/android"><alphaandroid:interpolator="@android:anim/linear_interpolator"android:repeatMode="reverse"android:repeatCount="infinite"android:duration="1000"android:fromAlpha="1.0"android:toAlpha="0.0"/></set>控制動畫的變化速度(勻速)設(shè)置動畫重復(fù)的方式(反向)設(shè)置動畫重復(fù)次數(shù)(無限循環(huán))指定動畫播放時長指定動畫開始時的透明度(不透明)指定動畫結(jié)束時的透明度(透明)旋轉(zhuǎn)動畫(RotateAnimation)旋轉(zhuǎn)動畫是通過為動畫指定開始時的旋轉(zhuǎn)角度、結(jié)束時的旋轉(zhuǎn)角度以及動畫播放時長來創(chuàng)建動畫的。10.5動畫10.5動畫<?xmlversion="1.0"encoding="utf-8"?><setxmlns:android="/apk/res/android"><rotateandroid:fromDegrees="0"android:toDegrees="360"android:pivotX="50%"android:pivotY="50%"android:repeatMode="reverse"android:repeatCount="infinite"android:duration="1000"/></set>指定動畫開始時的角度(原始位置)指定動畫結(jié)束時的角度(360°)指定軸心的X坐標(biāo)指定軸心的Y坐標(biāo)縮放動畫(ScaleAnimation)縮放動畫是通過為動畫指定開始時的縮放系數(shù)、結(jié)束時的縮放系數(shù)以及動畫持續(xù)時長來創(chuàng)建動畫的。10.5動畫10.5動畫<?xmlversion="1.0"encoding="utf-8"?><setxmlns:android="/apk/res/android"><scaleandroid:repeatMode="reverse"android:repeatCount="infinite"android:duration="3000"android:fromXScale="1.0"android:fromYScale="1.0"android:toXScale="0.5"android:toYScale="0.5"android:pivotX="50%"android:pivotY="50%"/></set>指定動畫開始時X軸上的縮放系數(shù)(不變化)指定動畫開始時Y軸上的縮放系數(shù)(不變化)指定動畫結(jié)束時X軸上的縮放系數(shù)(縮小0.5倍)指定動畫結(jié)束時Y軸上的縮放系數(shù)(縮小0.5倍)平移動畫(TranslateAnimation)平移動畫就通過為動畫指定開始位置、結(jié)束位置以及動畫持續(xù)時長來創(chuàng)建動畫的。10.5
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)培訓(xùn)網(wǎng)課件
- Photoshop平面設(shè)計(jì)基礎(chǔ) 課件 任務(wù)2.2 設(shè)計(jì)紅底證件照
- 時尚購物街區(qū)特色攤位租賃與品牌入駐合同
- 班主任聘用合同專業(yè)成長與教育教學(xué)責(zé)任協(xié)議
- 會議嘉賓接待與住宿安排服務(wù)合同
- 車輛指標(biāo)租賃與車牌轉(zhuǎn)讓一體化合同
- 油茶基地綜合開發(fā)方案
- 鉆井施工下步措施方案
- 餐飲行業(yè)加盟連鎖經(jīng)營合同書
- 彩票銷售店員工福利與晉升合同
- 一年級上冊美術(shù)教案-第1課 讓大家認(rèn)識我:誠實(shí)最好 ▏人美版
- 科學(xué)認(rèn)識天氣智慧樹知到期末考試答案2024年
- (高清版)DZT 0064.15-2021 地下水質(zhì)分析方法 第15部分:總硬度的測定 乙二胺四乙酸二鈉滴定法
- 預(yù)防艾滋病梅毒乙肝母嬰傳播干預(yù)措施
- 心理體檢收費(fèi)目錄
- 雅魯藏布江米林-加查段沿線暴雨泥石流危險度評價的中期報(bào)告
- 抗生素的正確使用與合理配比
- 讀書分享讀書交流會《局外人》課件
- 第十六章-常見骨關(guān)節(jié)疾病評定技術(shù)-2肩周炎評定
- 高性能計(jì)算在智能電網(wǎng)中的應(yīng)用
- 國家輔助類藥品一覽表
評論
0/150
提交評論