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

正文內(nèi)容

基于安卓平臺(tái)的個(gè)人記事本管理軟件設(shè)計(jì)本科畢業(yè)論文(參考版)

2025-06-30 20:17本頁(yè)面
  

【正文】 發(fā)送圖 611 發(fā)送發(fā)送功能,主要難度是在對(duì)于谷歌官方上提供的API內(nèi)容的理解,一開(kāi)始難以理解,后來(lái)參考了網(wǎng)上其他前輩的詳細(xì)解說(shuō),慢慢的用上了這個(gè)接口,豐富了功能。這里的話和原本的功能相比,同樣對(duì)內(nèi)存進(jìn)行了一個(gè)優(yōu)化,Android,通過(guò)Bitmap讀圖的時(shí)候,是一直占用著空間的,所以當(dāng)你刪了這個(gè)圖,或者不用這個(gè)圖的時(shí)候,就應(yīng)該回收Bitmap,空出空間,這里設(shè)為封面的話,應(yīng)該收回原本的圖,然后將現(xiàn)在的圖貼上去。另外這里原本也出現(xiàn)一個(gè)小BUG,就是當(dāng)所有的圖片記事都刪除了之后,就停在這個(gè)頁(yè)面不動(dòng)了,后來(lái)加了處理,當(dāng)最后一張圖刪除了,自動(dòng)退出當(dāng)前頁(yè)面,并且銷(xiāo)毀這個(gè)Activity,減少內(nèi)耗。這里遇到的問(wèn)題和前面的刪除文本記事的時(shí)候是一樣的,數(shù)據(jù)刪除了,但是頁(yè)面不刷新。//最后把標(biāo)志復(fù)原 return opt。 = sampleSize。amp。amp。amp。 //設(shè)置加載圖片的顏色數(shù)為16bit,默認(rèn)是RGB_8888,表//示24bit顏色和透明通//道,但一般用不上 = 1。 = false。 int outWidth = 。 = true。 } } return null。 ()。 } catch (Exception e) { ()。 options = setBitmapOption(filePath, outWidth, outHeight)。 try { fs = new FileInputStream(filePath)。public class CreateBitmap {public Bitmap readBitmapAutoSize(String filePath, int outWidth, int outHeight) { //outWidth和outHeight是目標(biāo)圖片的最大寬度和高度,用作限制 FileInputStream fs = null。并且更改了所有的對(duì)圖片進(jìn)行處理的函數(shù),從總體上來(lái)說(shuō),是對(duì)整個(gè)系統(tǒng)的一個(gè)優(yōu)化處理。再次點(diǎn)擊屏幕或者按返回鍵,可以退出查看圖片記事,這里遇到一個(gè)最大問(wèn)題,那就是Android內(nèi)存處理問(wèn)題,但是這樣的話消耗內(nèi)存是很大的,前期也感覺(jué)到了運(yùn)行不是很順暢,后來(lái)由于圖片過(guò)多或者過(guò)大都導(dǎo)致了程序崩潰,無(wú)法查看大圖等嚴(yán)重情況,后來(lái)在網(wǎng)上查資料,發(fā)現(xiàn)了其實(shí)Android官方提供了很多處理圖片的函數(shù),于是我選擇了其中對(duì)內(nèi)存消耗較小的一種函數(shù)。測(cè)試與預(yù)期符合。 圖片記事所有功能測(cè)試 查看相冊(cè)圖67查看相冊(cè)(查看圖片記事)這就是圖片記事展示頁(yè)面,直接展示該相冊(cè)分類(lèi)里面的圖片記事縮略圖。雖說(shuō)如此,但是開(kāi)發(fā)中依然遇到問(wèn)題,相應(yīng)的內(nèi)容必須要通過(guò)相應(yīng)的函數(shù)來(lái)調(diào)用,比如說(shuō)發(fā)送文字和發(fā)送文件,方法是不一樣的。安卓系統(tǒng)內(nèi)部會(huì)保存所有的APP,并且開(kāi)發(fā)人員可以搜索出所有的APP應(yīng)用,從而調(diào)用一些外部接口達(dá)到一些目的。所以進(jìn)行了如此改進(jìn)。這也是原本開(kāi)發(fā)過(guò)程中發(fā)現(xiàn)的問(wèn)題,原本的是點(diǎn)了返回就直接退出了,不做任何處理。這部份功能的一個(gè)小難點(diǎn)就在于,數(shù)據(jù)更新,老版本的項(xiàng)目上,修改標(biāo)題之后,在頁(yè)面上卻沒(méi)有反應(yīng),但是到數(shù)據(jù)庫(kù)查看之后,數(shù)據(jù)庫(kù)是已經(jīng)有更新了的,這種情況類(lèi)似于JAVA Web網(wǎng)頁(yè)開(kāi)發(fā)中網(wǎng)頁(yè)刷新?tīng)顩r類(lèi)似,后來(lái)查了資料,刪除之后,重新讀取數(shù)據(jù)庫(kù)數(shù)據(jù),并且重新適配頁(yè)面內(nèi)容,這樣子才成功地完成這個(gè)修改功能,前臺(tái)和后臺(tái)的數(shù)據(jù)統(tǒng)一刷新。原先的當(dāng)數(shù)據(jù)量大的時(shí)候,刪除了你也看不出什么反應(yīng),所以成功提示是必要的。 刪除圖 62 刪除長(zhǎng)按之后彈出功能框,點(diǎn)擊刪除,然后確定,彈出刪除成功字幕,如上圖。(parent, |, 0, 0)。//xoff,yoff基于anchor的左下角進(jìn)行偏移。//設(shè)置允許在外點(diǎn)擊消失(true)。 sharePopupWindow = new PopupWindow(view, (int)(160 * ), )。// 獲取屏幕密度(方法2) DisplayMetrics dm = new DisplayMetrics()。 break。 ()。 File file = new File(message)。 //(image/jpeg)。 Intent shareIntent1 = new Intent()。 break。 ()。 (text/plain)。 Intent shareIntent0 = new Intent()。 (adapter)。 ListAppInfo shareAppInfos = getShareAppList()。 if(null == sharePopupWindow) { //加載布局文件 view = (mcontext).inflate(, null)。 View view = null。 final int option=opt。代碼如下。return false。AlertDialog dialog=()。 //點(diǎn)擊取消按鈕,關(guān)閉彈出框(取消, new () { Override public void onClick(DialogInterface dialog, int which) { ()。//調(diào)用接口實(shí)現(xiàn)發(fā)送操作 break。//調(diào)用接口實(shí)現(xiàn)更新操作 break。//調(diào)用接口實(shí)現(xiàn)更新操作 break。//調(diào)用接口實(shí)現(xiàn)刪除操作 break。//彈出框(false)。 } Override public boolean onLongClick(View v) { // TODO Autogenerated method stubfinal String[] imgEdits=new String[]{刪除,修改標(biāo)題,更新內(nèi)容,發(fā)送}。 public LongClick(String dates,String title){ =dates。//點(diǎn)擊更新內(nèi)容之后的動(dòng)作 public void send(String dates,String title)。//點(diǎn)擊“刪除”之后的動(dòng)作 public void update_title(String dates)。} 各大記事模塊基礎(chǔ)操作長(zhǎng)按每一項(xiàng),都會(huì)彈出相應(yīng)的操作列表,如下圖:圖 58 各個(gè)記事箱的操作這些彈出框就是所有記事內(nèi)容的基本操作,針對(duì)不同模塊的不同需求,做出了相應(yīng)的功能框,另外,原本的彈出框是點(diǎn)擊返回鍵或者取消,或者彈出框之外任意處點(diǎn)擊,就會(huì)消失,這樣顯得操作很雜,一個(gè)功能,三種不同的動(dòng)作,都會(huì)響應(yīng),顯得雜亂,所以后期改進(jìn),將彈出框設(shè)定為只有點(diǎn)擊取消按鈕才會(huì)消失,否則不做任何操作。()0) (true)。 }}}//如果最后有數(shù)據(jù),則將相應(yīng)模塊設(shè)為可見(jiàn)狀態(tài)if(list!=nullamp。 if(.equals(words)||(title).indexOf(words)==1){ //去除不包含 關(guān)鍵字的數(shù)據(jù) ,words表示關(guān)鍵字內(nèi)容 (i)。i()。對(duì)于每類(lèi)數(shù)據(jù)都做這種處理,檢索出所有符合條件的數(shù)據(jù)。如圖56,圖57。亮出關(guān)鍵字然后就直接將處理好的字符串應(yīng)用上去而另外一個(gè)檢索功能同樣是整合了所有模塊的檢索功能,點(diǎn)擊之后出現(xiàn)如圖57的頁(yè)面,輸入關(guān)鍵字檢索所有內(nèi)容。//每秒幀數(shù)//使用surfaceview 預(yù)覽(().getSurface())。(screenx, screeny)。//設(shè)置聲音編碼格式()。//設(shè)置從攝像頭采集圖像()。()。().setKeepScreenOn(true)。().setType()。視頻記事內(nèi)容展示視頻記事新增圖 55 視頻記事本塊功能通過(guò)Android,SurfaceView控件來(lái)顯示視屏采集的時(shí)候的預(yù)覽,原本是攝像頭能攝像,但是卻沒(méi)有預(yù)覽界面,這是必要的,主要代碼如下,其中還包括了MediaRecorder()類(lèi)的攝像采集功能,跟處理音頻文件類(lèi)似,設(shè)置視頻來(lái)源,文件輸出格式,圖像編碼格式,幀數(shù),然后設(shè)定預(yù)覽對(duì)象,這樣就完成一個(gè)基本的攝像功能。開(kāi)發(fā)這個(gè)模塊的時(shí)候,發(fā)現(xiàn)其實(shí)很多時(shí)候別人的經(jīng)驗(yàn)是可以借鑒的,遇到關(guān)卡不要死卡在這里,多問(wèn)問(wèn)別人,別人或許最后沒(méi)解決你的問(wèn)題,但是通過(guò)交流會(huì)發(fā)現(xiàn)有很多新思路是你原來(lái)想都沒(méi)想到的。攝像頭的調(diào)用。通過(guò)單擊或者雙擊每一項(xiàng)內(nèi)容來(lái)達(dá)到操作目的,例如,刪除、播放、修改標(biāo)題、發(fā)送等功能。 ()。 } catch (IOException e) { ()。 try { ()。 (FileName)。 //設(shè)置輸出格式 ()。//創(chuàng)建音頻文件 //實(shí)例化Android多媒體類(lèi) recorder=new MediaRecorder()。//根據(jù)說(shuō)話音量調(diào)節(jié)顯示的圖片大小 }}private void StartRecorder(){//開(kāi)始錄音 (進(jìn)入StartRecorder)。//用線程 }static class MyHandler extends Handler{//線程 //根據(jù)聲音強(qiáng)弱改變圖片,從而達(dá)到看起來(lái)在說(shuō)話的效果 Override public void handleMessage(Message msg) { (+)。//將生成新的錄音文件//路徑存入數(shù)據(jù)庫(kù) dao=new DataBaseDAO(mydata)。長(zhǎng)按錄音語(yǔ)音記事內(nèi)容展示語(yǔ)音記事圖54 語(yǔ)音記事關(guān)鍵代碼如下:主要一個(gè)是對(duì)錄音通過(guò)線程來(lái)實(shí)現(xiàn),這樣保證錄音質(zhì)量,不會(huì)因?yàn)檐浖裁吹亩a(chǎn)生卡頓,另外就是錄音的一些編碼格式,文件保存格式,找一個(gè)最適用的格式來(lái)保存錄音,這樣也能有效提高質(zhì)量。并且樣式從原始的按鈕,改成了現(xiàn)在的話筒圖片替代,原始的按鈕有一個(gè)很大的缺陷,反應(yīng)慢,錄音開(kāi)始了,按鈕卻還在等反應(yīng),因?yàn)檫@個(gè)原因,甚至直接導(dǎo)致了系統(tǒng)崩潰,這安全性大大不達(dá)標(biāo),所以就用了自己重寫(xiě)的按鈕來(lái)處理這個(gè)過(guò)程,并且該圖標(biāo),使得看起來(lái)更加人性化。通過(guò)單擊或者雙擊每一項(xiàng)內(nèi)容來(lái)達(dá)到操作目的,例如,刪除、播放、修改標(biāo)題、發(fā)送等功能。新增圖片記事相冊(cè)展示圖片記事圖53圖片記事頁(yè)面布局這部分是相冊(cè)功能,也就是圖片記事的分類(lèi)功能這部分功能是通過(guò)Android提供的GridView,實(shí)現(xiàn)這種布局控制,可以設(shè)置每列顯示的數(shù)量,或者行列之間的間距,本設(shè)計(jì)是設(shè)置的每列3個(gè)。因此,創(chuàng)建出一個(gè)bitmap,再將其設(shè)為ImageView的source,加載顯示。另外,值得一提的是這部分其實(shí)是Android里面的圖片部分,前期設(shè)計(jì)的時(shí)候,由于圖片過(guò)于大,內(nèi)存消耗過(guò)多,導(dǎo)致這部分功能直接崩潰,程序無(wú)法正常運(yùn)行,google的android也為我們封裝好了若干方法,來(lái)方便快捷地完成這項(xiàng)工作,如ImageView的setImageBitmap,setImageResource,BitmapFactory的decodeResource等,最初始我也是用這些函數(shù)來(lái)處理圖片,但是后來(lái)發(fā)現(xiàn)圖片多了不行,大了不行。 } 頁(yè)面布局圖片記事如圖53,和文本記事布局相同,保持標(biāo)題欄”和“模塊向?qū)А辈蛔儯由先缦聢D所示的圖片記事相冊(cè)展示部分,這一塊的設(shè)計(jì)思想主要是考慮到可能用戶所添加的圖片記事內(nèi)容過(guò)多,用戶需要對(duì)這些圖片進(jìn)行管理,所以設(shè)計(jì)了這么一個(gè)相冊(cè)分類(lèi),點(diǎn)擊進(jìn)去可以看到這個(gè)相冊(cè)里面的所有圖片記事。 //長(zhǎng)按事件監(jiān)聽(tīng) (new LongClick(dates,title))。//顯示時(shí)間 (title)。 String title=(position).get(title)。 }else{ my_view = (myView) ()。 //找出頁(yè)面布局中現(xiàn)實(shí)時(shí)間戳的塊 = (TextView)()。 my_view=new myView()。 if(null == convertView){ LayoutInflater inflater = (mContext)。主要功能就是將數(shù)據(jù)傳給頁(yè)面顯示。新增依然保持界面統(tǒng)一風(fēng)格,另外要說(shuō)的是當(dāng)初開(kāi)發(fā)這塊內(nèi)容展示部分,原本是有滾動(dòng)條的,后來(lái)觀察了許多軟件上面其實(shí)是把滾動(dòng)條隱藏的,但是整體依然可以下拉,這樣一來(lái)雖然性質(zhì)沒(méi)變,但是展示的方式顯得更柔和,更貼近現(xiàn)在的市場(chǎng)上的安卓軟件的UI設(shè)計(jì)。點(diǎn)擊添加記事視頻記事語(yǔ)音記事圖片記事文本記事圖51整體頁(yè)面布局主頁(yè)布局部分有一個(gè)最關(guān)鍵的代碼部分: android:id=+id/viewPager android:layout_width=wrap_content android:layout_height=0dip android:layout_gravity=center android:layout_weight= android:background=000000 android:flipInterval=30 android:persistentDrawingCache=animation/這部分布局代碼就是實(shí)現(xiàn)四大功能左右滑動(dòng)切換的部分,ViewPager,相當(dāng)于一個(gè)容器,這個(gè)容器的應(yīng)用很廣泛,可以用來(lái)做界面導(dǎo)航,也可以用來(lái)做屏幕切換,當(dāng)然歡
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1