版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基于Android平臺(tái)記事本的設(shè)計(jì)與實(shí)現(xiàn)1.設(shè)計(jì)目的記事本的根本功能就是記事,用戶首先用到的就是文本記事,輸入事務(wù)信息以文本的形式展現(xiàn)出來,存儲(chǔ)起來。隨著用戶需求的增加,可能希望用圖形來代替文本來記事,用戶之間翻開記事本,看到圖片就能聯(lián)系自己所記載的事務(wù)信息。這樣免去了輸入文字的麻煩,反而會(huì)更簡(jiǎn)單。又或者是文本與圖片的交叉運(yùn)用,可以讓用戶自己選擇自己喜歡的記事方式,更加自由與便捷。所以此功能的意義是讓簡(jiǎn)單的記事信息能以文本、圖文和視頻表達(dá),更加豐富多彩。2.設(shè)計(jì)內(nèi)容本設(shè)計(jì)的根本內(nèi)容是在Android平臺(tái)下,設(shè)計(jì)與實(shí)現(xiàn)記事本軟件。具體要實(shí)現(xiàn)的功能是:
(1)設(shè)計(jì)實(shí)現(xiàn)添加“文字〞,“圖文〞,“視頻〞這三個(gè)主要的功能模塊。(2)進(jìn)入添加后,有“保存〞,“取消〞兩種選擇。(3)主頁面顯示記事列表,點(diǎn)擊可查看及時(shí)內(nèi)容,并有“刪除〞,“返回〞兩種選擇。(4)進(jìn)行測(cè)試并分析結(jié)果。3.開發(fā)環(huán)境的安裝與配置3.1Android開發(fā)平臺(tái)搭建本設(shè)計(jì)主要是以Eclipse為根底,安裝SDK和ADT插件后,用來開發(fā)安卓工程。開發(fā)平臺(tái)搭建步驟介紹如下。〔1)下載JDK并安裝,安裝后配置環(huán)境變量?!?)下載Eclipse解壓至指定文件夾。〔3〕下載SDK后解壓至指定文件夾,翻開SDK目錄,點(diǎn)擊SDKManager安裝開發(fā)安卓工程需要的包?!?〕啟動(dòng)Eclipse,進(jìn)入Help—>InstallNewSoftware—>Add,添加ADT插件?!?〕進(jìn)入Window—>Android—>Browse,選擇SDK安裝目錄。3.2硬件環(huán)境Android設(shè)備,如Android或平板電腦,主頻在1Ghz及以上,內(nèi)存為512MB以上,系統(tǒng)版本為Android2.1及以上。本設(shè)計(jì)使用Android4.4.4的。3.3軟件環(huán)境操作系統(tǒng):windows10IDE:EclipseAndroidSDK集成環(huán)境4.設(shè)計(jì)主體架構(gòu)4.1src文件夾src文件夾下com.liwenhuan.notepad包下為系統(tǒng)主要Activity類:NotesDB.java是進(jìn)行數(shù)據(jù)儲(chǔ)存的,通過SQLite保存數(shù)據(jù)。并且用onCreate函數(shù)創(chuàng)立數(shù)據(jù)庫。通過設(shè)置兩個(gè)按鈕的監(jiān)聽來實(shí)現(xiàn)對(duì)輸入文本的存儲(chǔ)或退出。MainActivity.java是主Activity,通過設(shè)置三個(gè)按鈕的監(jiān)聽來實(shí)現(xiàn)添加文本、圖文、視頻的記事方式。AddContent.java通過initView方法來判斷記事的方式,實(shí)現(xiàn)對(duì)文本、圖片、視頻的添加,獲取保存文件的時(shí)間。MyAdapter.java是顯示模塊,通過系統(tǒng)提供的Bitmap在記事列表顯示圖片和視頻的縮略圖。SelectAct.java是記事詳情的顯示模塊,通過監(jiān)聽的方法來實(shí)現(xiàn)記事的刪除功能。4.2gen文件夾
gen文件夾是工程自動(dòng)生成的文件夾R.java是工程下各個(gè)資源的標(biāo)識(shí)符負(fù)責(zé)所有資源的索引。
4.3bin文件夾
bin文件夾是編譯后的字節(jié)碼存放的目錄,編譯的過程首先是編譯成為android
java虛擬機(jī)文件classes.dex,再打包成APK格式的包。
4.4res文件夾
Res是資源目錄,它包含工程中的資源文件并將其編譯進(jìn)應(yīng)用程序中,向此目錄添加資源時(shí),會(huì)被R.java自動(dòng)記錄。res目錄存放所有程序中用到的資源文件?!百Y源文件〞指的資料文件、圖片等。子目錄有:drawable、layout、values。本設(shè)計(jì)主要用了layout目錄下的布局文件。layout是屏幕布局目錄,activity_main.xml是主界面的布局文件、addcontent.xml是增加數(shù)據(jù)頁面的布局文件、cell.xml是幾個(gè)功能按鈕的布局文件、select.xml是顯示記事詳情以及對(duì)記事進(jìn)行操作的布局文件。5.程序設(shè)計(jì)5.1數(shù)據(jù)存儲(chǔ)之SQLite這個(gè)方法在數(shù)據(jù)保存中非常常用,只是它只會(huì)被一個(gè)程序讀取數(shù)據(jù),不能在不同程序間共享數(shù)據(jù)。//創(chuàng)立數(shù)據(jù)庫publicvoidonCreate(SQLiteDatabasedb){db.execSQL("CREATETABLE"+TABLE_NAME+"("+ID +"INTEGERPRIMARYKEYAUTOINCREMENT,"+CONTENT +"TEXTNOTNULL,"+PATH+"TEXTNOTNULL,"+VIDEO+"TEXTNOTNULL,"+TIME+"TEXTNOTNULL)");}5.2添加文字內(nèi)容當(dāng)以文本方式記事時(shí),需要對(duì)輸入的文字內(nèi)容進(jìn)行保存。publicvoidinitView(){if(val.equals("1")){//文字c_img.setVisibility(View.GONE);//隱藏v_video.setVisibility(View.GONE);//隱藏 }}publicvoidonClick(Viewv){switch(v.getId()){caseR.id.save:addDB();//添加數(shù)據(jù) finish();//關(guān)閉當(dāng)前Activitybreak;caseR.id.delete: finish();break; }}5.3適配器配置publicclassMyAdapterextendsBaseAdapter{privateContextcontext;privateCursorcursor;privateLinearLayoutlayout;//視圖對(duì)象publicMyAdapter(Contextcontext,Cursorcursor){this.context=context;this.cursor=cursor; }@OverridepublicintgetCount(){returncursor.getCount();//返回長(zhǎng)度 }@OverridepublicObjectgetItem(intposition){returncursor.getPosition(); }@OverridepubliclonggetItemId(intposition){returnposition; }publicViewgetView(intposition,ViewconvertView,ViewGroupparent){LayoutInflaterinflater=LayoutInflater.from(context);//加載視圖的權(quán)限layout=(LinearLayout)inflater.inflate(R.layout.cell,null);//布局文件TextViewcontenttv=(TextView)layout.findViewById(R.id.list_content);//獲取上面布局文件中的每一個(gè)內(nèi)容TextViewtimetv=(TextView)layout.findViewById(R.id.list_time);//查找時(shí)間ImageViewimgiv=(ImageView)layout.findViewById(R.id.list_img);//查找圖片ImageViewvideoiv=(ImageView)layout.findViewById(R.id.list_video);//查找視頻cursor.moveToPosition(position);//查詢 Stringcontent=cursor.getString(cursor.getColumnIndex("content"));//獲取具體內(nèi)容 Stringtime=cursor.getString(cursor.getColumnIndex("time"));//獲取時(shí)間 Stringurl=cursor.getString(cursor.getColumnIndex("path"));//獲取圖片的縮略圖 Stringurlvideo=cursor.getString(cursor.getColumnIndex("video"));//獲取視頻contenttv.setText(content);//將內(nèi)容傳遞進(jìn)來timetv.setText(time);//將時(shí)間傳遞進(jìn)來videoiv.setImageBitmap(getVideoThumbnail(urlvideo,200,200,MediaStore.Images.Thumbnails.MICRO_KIND));//在列表顯示視頻縮略圖imgiv.setImageBitmap(getImageThumbnail(url,200,200));//在列表顯示圖片縮略圖returnlayout; }5.4添加圖片和視頻 在本設(shè)計(jì)中,不僅提供了以文本方式進(jìn)行記事,還提供了以圖片和視頻方式進(jìn)行記事。publicvoidinitView(){if(val.equals("2")){//圖片c_img.setVisibility(View.VISIBLE);//顯示v_video.setVisibility(View.GONE);//隱藏Intentiimg=newIntent(MediaStore.ACTION_IMAGE_CAPTURE);//跳轉(zhuǎn)到系統(tǒng)相機(jī)phoneFile=newFile(Environment.getExternalStorageDirectory() .getAbsoluteFile()+"/"+getTime()+".jpg");//獲取SD卡絕對(duì)路徑iimg.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(phoneFile));//存儲(chǔ)獲取的圖片信息startActivityForResult(iimg,1);//啟動(dòng)跳轉(zhuǎn)}if(val.equals("3")){c_img.setVisibility(View.GONE);//隱藏v_video.setVisibility(View.VISIBLE);//顯示Intentvideo=newIntent(MediaStore.ACTION_VIDEO_CAPTURE);//跳轉(zhuǎn)到系統(tǒng)信息videoFile=newFile(Environment.getExternalStorageDirectory() .getAbsoluteFile()+"/"+getTime()+".mp4");//獲取SD卡絕對(duì)路徑video.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(videoFile));//存儲(chǔ)獲取的video信息startActivityForResult(video,2);//啟動(dòng)跳轉(zhuǎn)}}//顯示圖片或視頻protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){//TODOAuto-generatedmethodstubsuper.onActivityResult(requestCode,resultCode,data);if(requestCode==1){//圖片Bitmapbitmap=BitmapFactory.decodeFile(phoneFile .getAbsolutePath());//獲取路徑c_img.setImageBitmap(bitmap);//展示內(nèi)容}if(requestCode==2){//視頻v_video.setVideoURI(Uri.fromFile(videoFile));//加載視頻v_video.start();//播放視頻}}5.5獲取圖片和視頻的縮略圖 當(dāng)我們用圖片或制品進(jìn)行記事時(shí),在列表中需要顯示其縮略圖,可以用系統(tǒng)提供的Bitmap進(jìn)行處理。//獲取圖片的縮略圖publicBitmapgetImageThumbnail(Stringuri,intwidth,intheight){ Bitmapbitmap=null;BitmapFactory.Optionsoptions=newBitmapFactory.Options();options.inJustDecodeBounds=true;bitmap=BitmapFactory.decodeFile(uri,options);options.inJustDecodeBounds=false;intbeWidth=options.outWidth/width;intbeHeight=options.outHeight/height;intbe=1;if(beWidth<beHeight){be=beWidth; }else{be=beHeight; }if(be<=0){be=1; }options.inSampleSize=be;bitmap=BitmapFactory.decodeFile(uri,options);bitmap=ThumbnailUtils.extractThumbnail(bitmap,width,height,ThumbnailUtils.OPTIONS_RECYCLE_INPUT);returnbitmap; }//獲取視頻的縮略圖privateBitmapgetVideoThumbnail(Stringuri,intwidth,intheight,intkind){ Bitmapbitmap=null;bitmap=ThumbnailUtils.createVideoThumbnail(uri,kind);bitmap=ThumbnailUtils.extractThumbnail(bitmap,width,height,ThumbnailUtils.OPTIONS_RECYCLE_INPUT);returnbitmap; }5.7詳情頁顯示protectedvoidonCreate(BundlesavedInstanceState){//TODOAuto-generatedmethodstubsuper.onCreate(savedInstanceState);setContentView(R.layout.select);//加載詳情//(getIntent().getIntExtra(NotesDB.ID,0));s_delete=(Button)findViewById(R.id.s_delete);s_back=(Button)findViewById(R.id.s_back);s_img=(ImageView)findViewById(R.id.s_img);s_video=(VideoView)findViewById(R.id.s_video);s_tv=(TextView)findViewById(R.id.s_tv);notesDB=newNotesDB(this);dbWriter=notesDB.getWritableDatabase();//獲取寫權(quán)限s_back.setOnClickListener(this);s_delete.setOnClickListener(this);//如果圖片為空,那么隱藏,否那么顯示if(getIntent().getStringExtra(NotesDB.PATH).equals("null")){s_img.setVisibility(View.GONE); }else{s_img.setVisibility(View.VISIBLE); }if(getIntent().getStringExtra(NotesDB.VIDEO).equals("null")){s_video.setVisibility(View.GONE); }else{s_video.setVisibility(View.VISIBLE); }s_tv.setText(getIntent().getStringExtra(NotesDB.CONTENT));//加載TextView的文字信息 Bitmapbitmap=BitmapFactory.decodeFile(getIntent().getStringExtra(NotesDB.PATH));//加載圖片信息s_img.setImageBitmap(bitmap);//顯示圖片信息s_video.setVideoURI(Uri .parse(getIntent().getStringExtra(NotesDB.VIDEO)));s_video.start();//播放視頻 }6.測(cè)試6.1虛擬設(shè)備AVD測(cè)試〔1〕主界面顯示如圖6.1所示。〔2〕記事頁面顯示如圖6.2所示。圖6.1圖6.2〔3〕記事列表顯示如圖6.3所示?!?〕記事詳情顯示如圖6.4所示。圖6.3圖6.46.2真機(jī)測(cè)試將記事本的apk文件導(dǎo)進(jìn),安裝后進(jìn)行測(cè)試,測(cè)試結(jié)果如下:〔1〕添加好內(nèi)容后,記事本的記事列表顯示如圖6.5所示?!?〕以文本方式添加記事,詳情顯示如圖6.6所示。圖6.5圖6.6〔3〕以圖文方式添加記事,內(nèi)容詳情頁顯示如圖6.7?!?〕以視頻結(jié)合文字方式添加記事,內(nèi)容詳情頁顯示如圖6.8。圖6.7圖6.87.總結(jié)通過此次設(shè)計(jì)過程我會(huì)到了許多知識(shí),在這個(gè)過程中遇到了許多困難,比方SDK和ADT的版本不能兼容,記事本工程可以在虛擬設(shè)備中運(yùn)行,在真機(jī)上測(cè)試時(shí)卻出現(xiàn)了問題,不能讀取圖片和視頻,通過在網(wǎng)上查找資料,發(fā)現(xiàn)是雖然在代碼中對(duì)SD卡添加了讀取權(quán)限,但沒有在AndroidMainfest.xml中添加對(duì)SD卡的讀取權(quán)限,所以出現(xiàn)了如上的錯(cuò)誤。通過不斷的發(fā)現(xiàn)問題,總結(jié)問題和解決問題的過程,使我對(duì)Android的認(rèn)識(shí)不斷的提高,得到了珍貴的經(jīng)驗(yàn)。代碼:MainActivity.javapackage;//采用接口方式publicclassMainActivityextendsActivityimplementsOnClickListener{ privateButtontextbtn,imgbtn,videobtn;//聲明三個(gè)button privateListViewlv;//創(chuàng)立listview privateIntenti;//通過intent來創(chuàng)立標(biāo)識(shí) privateMyAdapteradapter; privateNotesDBnotesDB;//數(shù)據(jù)庫對(duì)象 privateSQLiteDatabasedbReader;//獲取讀取權(quán)限 privateCursorcursor; @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView();//調(diào)用初始化方法 } //初始化 publicvoidinitView(){ lv=(ListView)findViewById(R.id.list);//找id操作 textbtn=(Button)findViewById(R.id.text);//找文字 imgbtn=(Button)findViewById(R.id.img);//找圖片 videobtn=(Button)findViewById(R.id.video);//找視頻 textbtn.setOnClickListener(this);//添加監(jiān)聽事件 imgbtn.setOnClickListener(this); videobtn.setOnClickListener(this); notesDB=newNotesDB(this);//數(shù)據(jù)庫實(shí)例化 dbReader=notesDB.getReadableDatabase();//獲取讀取權(quán)限 //獲取記事詳情 lv.setOnItemClickListener(newOnItemClickListener(){ @Override publicvoidonItemClick(AdapterView<?>parent,Viewview, intposition,longid){ cursor.moveToPosition(position); Intenti=newIntent(MainActivity.this,SelectAct.class); i.putExtra(NotesDB.ID, cursor.getInt(cursor.getColumnIndex(NotesDB.ID)));//獲取ID i.putExtra(NotesDB.CONTENT,cursor.getString(cursor .getColumnIndex(NotesDB.CONTENT)));//獲取內(nèi)容 i.putExtra(NotesDB.TIME, cursor.getString(cursor.getColumnIndex(NotesDB.TIME)));//獲取時(shí)間 i.putExtra(NotesDB.PATH, cursor.getString(cursor.getColumnIndex(NotesDB.PATH)));//獲取圖片 i.putExtra(NotesDB.VIDEO, cursor.getString(cursor.getColumnIndex(NotesDB.VIDEO)));//獲取視頻 startActivity(i);//跳轉(zhuǎn)到詳情頁 } }); } //添加一個(gè)復(fù)寫方法 @Override publicvoidonClick(Viewv){ i=newIntent(this,AddContent.class);//實(shí)例化操作 switch(v.getId()){ caseR.id.text: i.putExtra("flag","1"); startActivity(i);//跳轉(zhuǎn)至AddContent.java break; caseR.id.img: i.putExtra("flag","2"); startActivity(i); break; caseR.id.video: i.putExtra("flag","3"); startActivity(i); break; } } publicvoidselectDB(){ cursor=dbReader.query(NotesDB.TABLE_NAME,null,null,null,null, null,null); adapter=newMyAdapter(this,cursor); lv.setAdapter(adapter); } @Override protectedvoidonResume(){ super.onResume(); selectDB(); }}NotesDB.javapackage;publicclassNotesDBextendsSQLiteOpenHelper{ publicstaticfinalStringTABLE_NAME="notes";//指定名稱 publicstaticfinalStringCONTENT="content";//內(nèi)容 publicstaticfinalStringPATH="path";//圖片 publicstaticfinalStringVIDEO="video";//視頻 publicstaticfinalStringID="_id";//創(chuàng)立id publicstaticfinalStringTIME="time";//當(dāng)前保存文本的時(shí)間 //復(fù)寫一個(gè)構(gòu)造方法 publicNotesDB(Contextcontext){ super(context,"notes",null,1);//super返回值〔context,庫名,null,版本號(hào)〕 } @Override //創(chuàng)立數(shù)據(jù)庫 publicvoidonCreate(SQLiteDatabasedb){ //創(chuàng)立 db.execSQL("CREATETABLE"+TABLE_NAME+"("+ID +"INTEGERPRIMARYKEYAUTOINCREMENT,"+CONTENT +"TEXTNOTNULL,"+PATH+"TEXTNOTNULL,"+VIDEO +"TEXTNOTNULL,"+TIME+"TEXTNOTNULL)"); } @Override //更新數(shù)據(jù)庫,當(dāng)前需求,不需要更新 publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){ }}AddContent.javapackage;publicclassAddContentextendsActivityimplementsOnClickListener{ privateStringval;//用于接收MainActivity中的跳轉(zhuǎn)的定義 privateButtonsavebtn,deletebtn; privateEditTextettext; privateImageViewc_img; privateVideoViewv_video;//用來播放視頻 privateNotesDBnotesDB;//創(chuàng)立數(shù)據(jù)庫對(duì)象 privateSQLiteDatabasedbWriter; privateFilephoneFile,videoFile; @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.addcontent);//綁定視圖 val=getIntent().getStringExtra("flag");//接收完成 savebtn=(Button)findViewById(R.id.save);//尋找id deletebtn=(Button)findViewById(R.id.delete); ettext=(EditText)findViewById(R.id.ettext); c_img=(ImageView)findViewById(R.id.c_img); v_video=(VideoView)findViewById(R.id.c_video); savebtn.setOnClickListener(this);//監(jiān)聽事件 deletebtn.setOnClickListener(this); notesDB=newNotesDB(this);//實(shí)例化 dbWriter=notesDB.getWritableDatabase(); initView(); } //判斷是否顯示 publicvoidinitView(){ if(val.equals("1")){//文字 c_img.setVisibility(View.GONE);//隱藏 v_video.setVisibility(View.GONE);//隱藏 } if(val.equals("2")){//圖片 c_img.setVisibility(View.VISIBLE);//顯示 v_video.setVisibility(View.GONE);//隱藏 Intentiimg=newIntent(MediaStore.ACTION_IMAGE_CAPTURE);//跳轉(zhuǎn)到系統(tǒng)相機(jī) phoneFile=newFile(Environment.getExternalStorageDirectory() .getAbsoluteFile()+"/"+getTime()+".jpg");//獲取SD卡絕對(duì)路徑,照片儲(chǔ)存在SD卡中,數(shù)據(jù)庫中只存儲(chǔ)路徑 iimg.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(phoneFile));//存儲(chǔ)獲取的圖片信息 startActivityForResult(iimg,1);//啟動(dòng)跳轉(zhuǎn) } if(val.equals("3")){ c_img.setVisibility(View.GONE);//隱藏 v_video.setVisibility(View.VISIBLE);//顯示 Intentvideo=newIntent(MediaStore.ACTION_VIDEO_CAPTURE);//跳轉(zhuǎn)到系統(tǒng)信息 videoFile=newFile(Environment.getExternalStorageDirectory() .getAbsoluteFile()+"/"+getTime()+".mp4");//獲取SD卡絕對(duì)路徑 video.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(videoFile));//存儲(chǔ)獲取的video信息 startActivityForResult(video,2);//啟動(dòng)跳轉(zhuǎn) } } @Override publicvoidonClick(Viewv){ switch(v.getId()){ caseR.id.save: addDB();//添加數(shù)據(jù) finish();//關(guān)閉當(dāng)前Activity break; caseR.id.delete: finish(); break; } } //添加數(shù)據(jù) publicvoidaddDB(){ ContentValuescv=newContentValues();//實(shí)例化 cv.put(NotesDB.CONTENT,ettext.getText().toString());//添加內(nèi)容〔在輸入框中獲取到的〕 cv.put(NotesDB.TIME,getTime());//調(diào)用方法獲取時(shí)間并添加 cv.put(NotesDB.PATH,phoneFile+"");//將獲取的圖片信息插入數(shù)據(jù)庫中 cv.put(NotesDB.VIDEO,videoFile+"");//將獲取的vedio信息插入數(shù)據(jù)庫中 dbWriter.insert(NotesDB.TABLE_NAME,null,cv);//將上面添加的數(shù)據(jù)插入數(shù)據(jù)庫中 } //獲取保存文件時(shí)的時(shí)間 privateStringgetTime(){ SimpleDateFormatformat=newSimpleDateFormat("yyyy年MM月dd日HH:mm:ss"); DatecurDate=newDate(); Stringstr=format.format(curDate);//按指定的格式獲取時(shí)間 returnstr; } @Override protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){ //TODOAuto-generatedmethodstub super.onActivityResult(requestCode,resultCode,data); if(requestCode==1){//圖片 Bitmapbitmap=BitmapFactory.decodeFile(phoneFile .getAbsolutePath());//獲取路徑 c_img.setImageBitmap(bitmap);//展示內(nèi)容 } if(requestCode==2){//視頻 v_video.setVideoURI(Uri.fromFile(videoFile));//加載視頻 v_video.start();//播放視頻 } }}MyAdapter.javapackage;publicclassMyAdapterextendsBaseAdapter{ privateContextcontext; privateCursorcursor; privateLinearLayoutlayout;//視圖對(duì)象 //構(gòu)造方法 publicMyAdapter(Contextcontext,Cursorcursor){ this.context=context; this.cursor=cursor; } @Override publicintgetCount(){ returncursor.getCount();//返回長(zhǎng)度 } @Override publicObjectgetItem(intposition){ returncursor.getPosition(); } @Override publiclonggetItemId(intposition){ //TODOAuto-generatedmethodstub returnposition; } publicViewgetView(intposition,ViewconvertView,ViewGroupparent){ LayoutInflaterinflater=LayoutInflater.from(context);//加載試圖的權(quán)限 layout=(LinearLayout)inflater.inflate(R.layout.cell,null);//布局文件 TextViewcontenttv=(TextView)layout.findViewById(R.id.list_content);//獲取上條布局文件中的每一個(gè)內(nèi)容 TextViewtimetv=(TextView)layout.findViewById(R.id.list_time);//顯示時(shí)間 ImageViewimgiv=(ImageView)layout.findViewById(R.id.list_img);//顯示圖片 ImageViewvideoiv=(ImageView)layout.findViewById(R.id.list_video);//顯示視頻 cursor.moveToPosition(position);//查詢 Stringcontent=cursor.getString(cursor.getColumnIndex("content"));//承載查詢到的具體內(nèi)容 Stringtime=cursor.getString(cursor.getColumnIndex("time"));//獲取時(shí)間 Stringurl=cursor.getString(cursor.getColumnIndex("path"));//獲取圖片的縮略圖 Stringurlvideo=cursor.getString(cursor.getColumnIndex("video"));//獲取視頻 contenttv.setText(content);//將內(nèi)容傳遞進(jìn)來 timetv.setText(time);//將時(shí)間傳遞進(jìn)來 videoiv.setImageBitmap(getVideoThumbnail(urlvideo,200,200, MediaStore.Images.Thumbnails.MICRO_KIND));//在列表顯示視頻縮略圖imgiv.setImageBitmap(getImageThumbnail(url,200,200));//在列表顯示圖片縮略圖 returnlayout; } //獲取圖片的縮略圖 publicBitmapgetImageThumbnail(Stringuri,intwidth,intheight){ Bitmapbitmap=null; BitmapFactory.Optionsoptions=newBitmapFactory.Options(); options.inJustDecodeBounds=true; bitmap=BitmapFactory.decodeFile(uri,options); options.inJustDecodeBounds=false; intbeWidth=options.outWidth/width; intbeHeight=options.outHeight/height; intbe=1; if(beWidth<beHeight){ be=beWidth; }else{ be=beHeight; } if(be<=0){ be=1; } options.inSampleSize=be; bitmap=BitmapFactory.decodeFile(uri,options); bitmap=ThumbnailUtils.extractThumbnail(bitmap,width,height, ThumbnailUtils.OPTIONS_RECYCLE_INPUT); returnbitmap; } //獲取視頻的縮略圖 privateBitmapgetVideoThumbnail(Stringuri,intwidth,intheight,intkind){ Bitmapbitmap=null; bitmap=ThumbnailUtils.createVideoThumbnail(uri,kind); bitmap=ThumbnailUtils.extrac
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版節(jié)能環(huán)保設(shè)施運(yùn)營(yíng)管理合同范本3篇
- 二零二五年汽車租賃公司兼職司機(jī)合同3篇
- 二零二五版家居用品寄售代理合同范本3篇
- 二零二五版草原生態(tài)補(bǔ)償機(jī)制承包合同3篇
- 二零二五版插畫師合作合同范本-漫畫創(chuàng)作合作與版權(quán)歸屬協(xié)議3篇
- 二零二五版建筑工程施工企業(yè)施工許可證注銷合同3篇
- 二零二五版安徽農(nóng)民工就業(yè)跟蹤服務(wù)合同范本3篇
- 2025版塊石石材礦山投資合作合同3篇
- 基于2025年度行業(yè)標(biāo)準(zhǔn)的招投標(biāo)實(shí)習(xí)合同3篇
- 二零二五年金融創(chuàng)新抵押借款合同范本分享3篇
- 蔣詩萌小品《誰殺死了周日》臺(tái)詞完整版
- TB 10010-2008 鐵路給水排水設(shè)計(jì)規(guī)范
- 黑色素的合成與美白產(chǎn)品的研究進(jìn)展
- 建筑史智慧樹知到期末考試答案2024年
- 金蓉顆粒-臨床用藥解讀
- 社區(qū)健康服務(wù)與管理教案
- 2023-2024年家政服務(wù)員職業(yè)技能培訓(xùn)考試題庫(含答案)
- 2023年(中級(jí))電工職業(yè)技能鑒定考試題庫(必刷500題)
- 藏歷新年文化活動(dòng)的工作方案
- 果酒釀造完整
- 第4章-理想氣體的熱力過程
評(píng)論
0/150
提交評(píng)論