第十章 高級編程_第1頁
第十章 高級編程_第2頁
第十章 高級編程_第3頁
第十章 高級編程_第4頁
第十章 高級編程_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第十章高級編程10.1Notification的使用10.5動畫10.3多媒體10.2攝像頭與相冊10.4MaterialDesign體驗10.6小結8.7小結10.1Notification的使用通知(Notification)是Android系統(tǒng)提供的一種具有全局效果的通知功能,可以在系統(tǒng)通知欄中顯示。當APP向系統(tǒng)發(fā)出通知時它將先以圖標的形式顯示在通知欄中。用戶可以下拉通知欄查看通知的詳細信息。通知欄和抽屜式通知欄均是由系統(tǒng)控制,用戶可以隨時查看。想要了解通知的基本概念我們先來看一下通知的使用方法。通知的創(chuàng)建比較靈活,可以在活動中創(chuàng)建也可以在廣播接收器中創(chuàng)建,當然也可以在我們上一章學習的服務中創(chuàng)建,相比后兩種創(chuàng)建方式,在活動中創(chuàng)建通知的情況比較少見,一般只有當程序進入后臺執(zhí)行時才會需要這種類型的通知。10.1Notification的使用Android8.0系統(tǒng)之后,Google推出了通知渠道的概念。通知渠道是開發(fā)人員在創(chuàng)建通知的時候為每個通知指定的渠道,你也可以理解成是通知類型。屬于同一通知渠道的通知可以進行統(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);運行程序點擊SENDSERVICE按鈕,可以系統(tǒng)狀態(tài)來左邊看到小圖標并且從下拉通知狀態(tài)來可以看到通知的詳細信息,如右圖想要實現(xiàn)通知信息的點擊效果我們還需要在代碼中進行相應設定,這就是新的概念PendingIntent。PendingIntent類似于Intent,但是與Intent傾向于立即執(zhí)行某個動作的操作不同,PendingIntent更傾向于在某個合適的實際去執(zhí)行某個動作,也可以理解成延遲執(zhí)行的Intent。用法很簡單,PendingIntent提供了幾個靜態(tài)方法來獲取實例,包括getActivity()方法、getBroadcast()方法以及getService()方法。10.1Notification的使用10.2攝像頭與相冊10.2.1調用攝像頭首先創(chuàng)建File對象用于存放攝像頭拍下的圖片,并將拍攝到的圖片命名為output_image.jpg存放于手機SD卡的應用關聯(lián)混村目錄下,通過調用getExternalCacheDir()方法得到這個目錄。接下來構建Intent對象,并通過Intent對象的action指定android.media.action.IMAGE_CAPTURE隱式啟動攝像機,在調用Intent的putExtra方法指定圖片輸出路徑。Google對Android高版本使用用戶數(shù)據(jù)的權限越來越嚴,因此本例中涉及到保存到SD卡的權限以及使用攝像機的兩個權限需要申請運行時權限。10.2攝像頭與相冊10.2.2相冊使用在openAlbm()方法中,我們先構建出隱式Intetn對象,并將它的action指定為ent.GRT_CONTENT。為這個Intent對象設置必要的參數(shù),然后調用數(shù)據(jù)回傳的啟動方式startActivityForResult()方法啟動。當我們從相冊選擇完照片回到onActivityResult()方法時會根據(jù)整形常量選擇不同的分支處理圖片。接下來根據(jù)手機Android系統(tǒng)的版創(chuàng)建了兩個方法handleImageHigh()和handleImageBefor()方法,分別用來處理不同AndroidSDK版本的圖片。MediaPlayer是用于播放音頻和視頻的,它支持多種格式音頻文件(3gp、mp4),并提供了非常全面的控制方法。10.3多媒體方法名稱功能描述setDataSource()設置要播放的音頻文件的位置prepare()在開始播放之前調用這個方法完成準備工作start()開始或繼續(xù)播放音頻pause()暫停播放音頻reset()將MediaPlayer對象重置到剛剛創(chuàng)建的狀態(tài)seekTo()從指定位置開始播放音頻stop()停止播放音頻,調用該方法后MediaPlayer對象無法在播放音頻release()釋放掉與MediaPlayer對象相關的資源isPlaying()判斷當前MediaPlayer是否正在播放音頻getDuration獲取載入的音頻文件的時長…………MediaPlayer常用方法MediaPlayer接收音頻類型有很多,其中有四種較為常用的類型:AudioManager.STREAM_MUSIC(音樂)AudioManager.STREAM_RING(響鈴)AudioManager.STREAM_ALARM(鬧鐘)AudioManager.STREAM_NOTIFICTION(提示音)音頻類型不同占據(jù)的內存空間也不同,音頻時間越短占的內存越小MediaPlayermediaPlayer=newMediaPlayer();mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);10.3多媒體設置聲音流類型設置數(shù)據(jù)源有三種方式,分別是播放應用自帶的音頻文件、播放SD卡中的音頻文件、播放網(wǎng)絡音頻文件。10.3多媒體mediaPlayer.create(this,R.raw.xxx);mediaPlayer.setDataSource("mnt/sdcard/xxx.mp3");mediaPlayer.setDataSource("http://www.xxx.mp3");應用程序自帶音頻文件SD卡中音頻文件網(wǎng)絡音頻文件10.3.2VideoView播放視頻播放視頻文件與播放音頻文件類似,視頻文件需要使用視覺組件將影像展示出來。在Android中主要使用VideoView組件播放視頻。它將視頻的顯示和控制集于一身,借助這個控件就可以完成簡易的視頻播放器。10.3多媒體方法名稱功能描述setVideoPath()設置要播放的視頻文件的位置start()開始或繼續(xù)播放視頻pause()暫停播放視頻resume()將視頻重新開始播放seetTo()從指定位置開始播放視頻isPlaying()判斷當前是否正在播放視頻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)絡視頻

videoView.setVideoURI(Uri.parse("https://xxxx"));videoView.start();使用VideoView播放視頻時可以添加一個控制器MediaController,這是一個包含美麗播放器控件的視圖,包含一些典型的按鈕,像播放/暫停、倒帶、快進與進度華東其。它管理媒體播放器的狀態(tài)以保持控件的同步,示例代碼如下所示:MediaControllercontroller=newMediaController(context);//為VideoView綁定控制器

videoView.setMediaController(controller);10.3多媒體10.4.1什么是MaterialDesignMaterialDesign是由Google的設計工程師們基于傳統(tǒng)優(yōu)秀的設計原則,結合豐富的創(chuàng)意和科學技術所開發(fā)的一套全新的界面設計語言,包含了視覺、運動、互動效果等特性。為了做出表率,Google從Android5.0系統(tǒng)開始,就將所有內置的應用都使用MaterialDesign風格進行設計。10.4MaterialDesign體驗10.4.2ToolbarToolbar控件是由appcompat-v7庫提供的。添加控件的時候需要為Toolbar制定一個id,并將它的寬度設置為match_parent,高度設置為?attr/actionBarSize即ActionBar高度。10.4MaterialDesign體驗<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>不過只有一個標題的Toolbar看起來太單調了,我們還可以再添加一些action按鈕來讓Toolbar更加豐富一些。創(chuàng)建一個toolbar.xml菜單文件,并編寫如下代碼:10.4MaterialDesign體驗<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體驗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提供的各種工具,我們可以輕松的實現(xiàn)炫酷的活動菜單效果。DrawerLayout使用NavigationView的使用10.4MaterialDesign體驗在Android開發(fā)中,避免不了用到動畫,Android中的動畫分為補間動畫和逐幀動畫兩種。10.5動畫補間動畫通過對View中內容進行一系列的圖形變換來實現(xiàn)動畫效果,其中圖形變化包括平移、縮放、旋轉、改變透明度等。按照事先準備好的靜態(tài)圖像順序播放的,利用人眼的“視覺暫留”原理,給用戶造成動畫的錯覺。逐幀動畫10.5.1補間動畫在Android中,提供了四種補間動畫:透明度漸變動畫(AlphaAnimation)旋轉動畫(RotateAnimation)縮放動畫(ScaleAnimation)平移動畫(TranslateAnimation)10.5動畫透明度漸變動畫(AlphaAnimation)透明度漸變動畫是通過改變View組件透明度來實現(xiàn)的漸變效果。它主要通過為動畫指定開始時的透明度、結束時的透明度以及動畫持續(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ù)(無限循環(huán))指定動畫播放時長指定動畫開始時的透明度(不透明)指定動畫結束時的透明度(透明)旋轉動畫(RotateAnimation)旋轉動畫是通過為動畫指定開始時的旋轉角度、結束時的旋轉角度以及動畫播放時長來創(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>指定動畫開始時的角度(原始位置)指定動畫結束時的角度(360°)指定軸心的X坐標指定軸心的Y坐標縮放動畫(ScaleAnimation)縮放動畫是通過為動畫指定開始時的縮放系數(shù)、結束時的縮放系數(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ù)(不變化)指定動畫結束時X軸上的縮放系數(shù)(縮小0.5倍)指定動畫結束時Y軸上的縮放系數(shù)(縮小0.5倍)平移動畫(TranslateAnimation)平移動畫就通過為動畫指定開始位置、結束位置以及動畫持續(xù)時長來創(chuàng)建動畫的。10.5

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論