項目開發(fā)用到拍照顯示圖片,有這些問題:
1.項目需求:彈出框中調用相機拍照趟据,其他手機沒有問題券犁,唯獨三星手機在拍照時會自動旋轉,這樣原來的Dialog會消失汹碱,在不判空的情況下粘衬,返回圖片路徑顯示在原來Dialog上會報錯,如果加了判空咳促,當然不會報錯稚新,但是原來的Dialog已經(jīng)消失,之前填寫的數(shù)據(jù)都將消失跪腹。網(wǎng)上查詢解決方法褂删,xml文件給activity配置android:configChanges="orientation|screenSize"屬性,然后在activity重載onConfigurationChanged方法冲茸,這樣確實解決三星拍照問題屯阀,但是引出另一個問題,就是這個界面將支持橫豎屏切換轴术,然后想到一種解決方案难衰,就是雖然在xml中配置了屬性,那么在代碼中應該可以設置橫豎屏屬性逗栽,參考http://blog.sina.com.cn/s/blog_5da93c8f01012pnd.html終于完美解決這個問題
2.項目需求:在另一個界面同樣用手機拍照盖袭,但是這個界面支持橫豎屏切換,但是橫豎屏是兩個布局,切換時要重新加載另一個布局苍凛。同樣的用到了第一個需求里面的方法這樣也能夠解決三星的問題了趣席,但是在拍照的時候橫豎屏切換呢,這個時候又血崩醇蝴,之前的Dialog沒了宣肚,用不了了,所以在我在彈出框顯示的時候把界面強制顯示當前的橫豎屏其中一個悠栓,不讓它旋轉霉涨,當dialog消失再把這個屬性放出來可以旋轉,但是又引起一個問題惭适,用上面的方法activity將不會重建笙瑟,這樣就不會重新加載另一個布局,然后查看橫豎屏切換的所走的方法癞志,知道會走onConfigurationChanged方法往枷,這時候我就想到把當前activity殺掉重啟,所以用到了recreate方法凄杯,解決了這個問題错洁。
3.三星拍照還有個問題,拍出來的照片是旋轉了90度的戒突,想哭的心都有了屯碴,三星手機真坑,只能尋找照片旋轉的方法膊存,源地址找不到了导而,這里就把代碼貼出來了:
**
* 讀取圖片屬性:旋轉的角度
*@parampath圖片絕對路徑
*@returndegree旋轉的角度
*/
public static intreadPictureDegree(String path) {
intdegree? =0;
try{
ExifInterface exifInterface =newExifInterface(path);
intorientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION,ExifInterface.ORIENTATION_NORMAL);
switch(orientation) {
caseExifInterface.ORIENTATION_ROTATE_90:
degree =90;
break;
caseExifInterface.ORIENTATION_ROTATE_180:
degree =180;
break;
caseExifInterface.ORIENTATION_ROTATE_270:
degree =270;
break;
}
}catch(IOException e) {
e.printStackTrace();
}
returndegree;
}
/**
* 旋轉圖片
*@paramangle
*@parambitmap
*@returnBitmap
*/
public staticBitmaprotaingImageView(intangle,Bitmap bitmap) {
//旋轉圖片 動作
Matrix matrix =newMatrix();;
matrix.postRotate(angle);
System.out.println("angle2="+ angle);
// 創(chuàng)建新的圖片
Bitmap resizedBitmap = Bitmap.createBitmap(bitmap,0,0,
bitmap.getWidth(),bitmap.getHeight(),matrix, true);
returnresizedBitmap;
}
以上作為一個記錄在項目開發(fā)中遇到的問題,如果有人有更好的解決的方法隔崎,可以留言今艺,一起討論。