Android調用系統(tǒng)拍照

在今天的學習中堪置,使用了橫向的滾動控件 HorizontalScrollView张惹,并在其中添加一個橫向的LinearLayout 來實現(xiàn)動態(tài)調用系統(tǒng)相機舀锨,拍攝并保存圖片的一個邏輯宛逗,下面我就來進行詳細的介紹。

基本思路就是 保存拍照返回的路徑集合(List<ImagePath>)替蔬,根據路徑集合中的內容生成Bitmap(位圖)屎暇,然后對圖片進行一定的處理(縮放,壓縮)根悼。接著創(chuàng)建 ImageView 實例,并將ImageView 實例添加到 LinearLayout 中番挺。

布局我就不詳細介紹了,無非就是HorizontalScrollView控件中嵌套一個子布局 LinearLayout襟衰。

代碼如下:

public static ?ArrayList<String> ??filePaths ; ? ?/ /圖片地址的集合

@Override

protected void ? onResume() {? ? ? //界面可見粪摘,且可與用戶交互

? ? ? super.onResume();

? ? ? ? ? ? ?if( filePaths!=null ){

? ? ? ? ? ? ? ? ? mLinearLayout.removeAllViews();

? ? ? ? ? ? ? ? ? mLinearLayout.setVisibility(View.VISIBLE);

? ? ? ? ? ? ? ? ? ?for (int ?i=0 ; i<= filePaths.size() ;i++){

? ? ? ? ? ? ? ? ? ? ? ? ? ? ImageView imageView ?= ?new ?ImageView(this);

? ? ? ? ? ? ? ? ? ? ? ? ? ?LinearLayout.LayoutParams params=newLinearLayout.LayoutParams(200,200);

? ? ? ? ? ? ? ? ? ? ? ? ? ?params.rightMargin=10;

? ? ? ? ? ? ? ? ? ? ? ? ? ?params.leftMargin=10;

? ? ? ? ? ? ? ? ? ? ? ? ? imageView.setLayoutParams(params);

? ? ? ? ? ? ? ? ? ? ? ? ?if ?( ?i < ?filePaths.size() ) ?{

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? File ? file ?= new ?File( filePaths.get(i) );

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if( ?file.exists() ){?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Bitmap bitmap= BitmapFactory.decodeFile(filePaths.get(i));

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? imageView.setImageBitmap(bitmap);

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}else{

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? imageView.setImageResource(R.mipmap.default_img); ? }

? ? ? ? ? ? ? ? ? ? ? ? }else{

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?imageView.setImageResource(R.mipmap.btn_add_img);

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}

? ? ? ? ? ? ? ? ? ? ? mLinearLayout.addView(imageView,i);

? ? ? ? ? ? ? ? ? ? ? ImageViewOnClick(imageView,i);? / / ? ImageView 的點擊事件

? ? ? ? ? ? ? ? ? ? ?}

}

}

上述代碼中 ,是根據 圖片路徑集合的長度來創(chuàng)建 ImageView 實例的苔悦,并添加到LinearLayout 中。默認添加一個圖片把介,用來點擊調用系統(tǒng)的拍照蟋座。當點擊圖片時拗踢,如不是默認圖片向臀,則跳轉到圖片詳情頁巢墅,否則調用系統(tǒng)拍照券膀。

圖片詳情頁使用的是 PhotoView,是一個比較常用的圖片開源庫蓄髓,可以根據手勢來縮放圖片雀监。

下面是調用系統(tǒng)拍照的代碼:

? ? ? ? Intent intent=new Intent( MediaStore.ACTION_IMAGE_CAPTURE);

? ? ? ? Uri uri=Uri.fromFile(newFile(mImgPath));

? ? ? ? intent.putExtra(MediaStore.EXTRA_OUTPUT,uri);

? ? ? ? intent.putExtra(MediaStore.Images.ImageColumns.ORIENTATION,0);

? ? ? ? startActivityForResult(intent,1001);

其中?mImgPath 是拍照圖片保存的路徑眨唬。需要自己手動生成。

然后就是 onActivityResult()方法啦匾竿,拍照后 圖片的內容就保存在 mImgPath 這個路徑之中。我們需要在這個方法中對 圖片進行一些必要的處理临庇。

處理的原因是,現(xiàn)在的手機像素非常高了昵慌,拍成的圖片一般都比較大,如果不對圖片進行處理斋攀,會很容易造成內存溢出,從而使你的應用崩潰侧蘸。在這里推薦一個圖片壓縮的第三方庫,Luban 壓縮讳癌,可以去研究下。

圖片的處理代碼如下:

Bitmap bitmap= ImageTools.convertToBitmap(mImgPath,800,800); // 轉換成圖片

Bitmap bitmapComp=ImageTools.comp(bitmap);//進行圖片壓縮

ImageTools.saveBitmap(bitmapComp,mImgPath);//保存圖片

if(bitmap!=null){

? ? ? ? filePaths.add(mImgPath);

}

這里代碼的基本思路就是逢艘,對拍照返回的路徑中的內容轉換成圖片骤菠,并對圖片進行壓縮處理埋虹,然后將圖片保存到拍照返回的路徑中娩怎,最后將路徑添加到集合中。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末爬泥,一起剝皮案震驚了整個濱河市崩瓤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌境输,老刑警劉巖颖系,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異嘁扼,居然都是意外死亡,警方通過查閱死者的電腦和手機强缘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門不傅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人商虐,你說我怎么就攤上這事〕屏” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵痴柔,是天一觀的道長疫向。 經常有香客問我,道長搔驼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任糯耍,我火速辦了婚禮囊嘉,結果婚禮上,老公的妹妹穿的比我還像新娘扭粱。我一直安慰自己,他們只是感情好蜓堕,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布博其。 她就那樣靜靜地躺著,像睡著了一般贺奠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天儿普,我揣著相機與錄音,去河邊找鬼眉孩。 笑死,一個胖子當著我的面吹牛浪汪,可吹牛的內容都是我干的。 我是一名探鬼主播广恢,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼呀潭,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了钠署?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤舰蟆,失蹤者是張志新(化名)和其女友劉穎狸棍,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體隔缀,經...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡猾瘸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了淮悼。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡袜腥,死狀恐怖钉汗,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情损痰,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布肪凛,位于F島的核電站,受9級特大地震影響伟墙,放射性物質發(fā)生泄漏。R本人自食惡果不足惜就乓,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一譬淳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧邻梆,春花似錦、人聲如沸浦妄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽阅懦。三九已至,卻和暖如春耳胎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背废登。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工郁惜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人兆蕉。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像半醉,于是被迫代替她去往敵國和親劝术。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內容