2015-04-03 88 views
0

我想上傳圖像,並將其設置爲背景,但我沒有運氣。上傳圖像,並將其設置爲背景Android

因此,上傳工作正常,但是當我嘗試將圖像設置爲背景時,它不起作用。

這裏是上傳圖片代碼:

Intent intent = new Intent(Intent.ACTION_PICK, 
    android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
    startActivityForResult(intent, 0); 

然後上傳:

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // TODO Auto-generated method stub 
    super.onActivityResult(requestCode, resultCode, data); 
    if (resultCode == RESULT_OK){ 
    Uri targetUri = data.getData(); 
    // textTargetUri.setText(targetUri.toString()); 
    try { 
    Bitmap bitmap=BitmapFactory.decodeStream(getContentResolver().openInputStream(targetUri)); 
    BitmapDrawable bit_background = new BitmapDrawable(getResources(), bitmap); 
    //prof_bg.setVisibility(View.VISIBLE); 
    prof_bg.setBackground(bit_background); //does not show. 

    } catch (FileNotFoundException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    } 
    } 
} 

XML的ImageView:

<ImageView 
android:id="@+id/bg_image" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:visibility="gone"/> 

在它沒有顯示任何東西,也給我的那一刻任何錯誤,所以我想問..

  1. 那麼我該如何獲得我把上傳圖像填充到整個android手機屏幕的背景。

  2. 即使在活動停止後,如何將圖像保存在該背景上。 (或者叫圖像立刻當活動開始,而不按一下按鈕,再選擇圖像)

更新(仍然沒有工作)

Bitmap bitmap=BitmapFactory.decodeStream(getContentResolver().openInputStream(targetUri)); 
Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, 400, 400, false); 
BitmapDrawable bit_background = new BitmapDrawable(getResources(), scaledBitmap); 
prof_bg.setVisibility(View.VISIBLE); 
prof_bg.setBackground(bit_background); 

感謝您的時間閱讀,助理仍然需要。

回答

0

1)的setBackground失敗,因爲大的圖像尺寸,可以嘗試設置之前,規模下來:

Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, 400, 400, false); //set the w x h as you want 
BitmapDrawable bit_background = new BitmapDrawable(getResources(), scaledBitmap); 
prof_bg.setVisibility(View.VISIBLE); 
prof_bg.setBackground(bit_background); 

2)保存在SharedPreferences的targetURI中串並檢索其活動開始時設置。

+0

對不起,它沒有工作,它確實填滿整個屏幕,但沒有去背景。我仍然可以點擊按鈕,但圖像覆蓋了它們。我更新了你的代碼。 – nothingness 2015-04-04 02:11:02

+0

可以給我更多關於什麼沒有在背景上的細節?我認爲你正在嘗試設置ImageView背景。 – itechevo 2015-04-04 10:31:49

+0

它沒有去背景。它只是涵蓋了一切。但它確實伸展到適合屏幕,但它沒有去到後臺。 – nothingness 2015-04-04 13:54:24

0

OnActivityResult(),您必須確保文件路徑是正確的。這就是我所做的。也許你可以試試看。

Uri targetUri = data.getData(); 
String[] filePathColumn = { MediaStore.Images.Media.DATA }; 

Cursor cursor = mContext.getContentResolver().query(targetUri,filePathColumn, null, null, null); 
cursor.moveToFirst(); 
int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
String picturePath = cursor.getString(columnIndex); 
cursor.close(); 

一旦你得到picturePath,你可以將它保存到SharedPreference中,以便你可以檢查並檢索它,如果有的話。所以你不必再次選擇圖片。

// to set the background image 
BitmapDrawable bb = new BitmapDrawable (null, BitmapFactory.decodeFile(picturePath)); 
(findViewById(R.id.bg_image)).setImageDrawable(bb); 
+0

放入後臺給我錯誤:類型不匹配:無法從位圖轉換爲BitmapDrawable在第一行和'方法setImageDrawable(BitmapDrawable)未定義的類型視圖'第二。 – nothingness 2015-04-04 15:54:54

+0

哎呀..對不起。將其更改爲 BitmapDrawable bb = new BitmapDrawable(null,BitmapFactory.decodeFile(picturePath)); 並且只是fyi,您需要在清單文件中添加READ_EXTERNAL_STORAGE的使用權限。 – 4tee 2015-04-06 03:06:49

相關問題