2012-11-22 15 views
11

Chcę pokazać obraz w widoku obrazu, więc zrobiłem folder - drawable w res i umieściłem tam mój obraz. Coś jak apple.png. Następnie używam tego kodu:Jak ustawić obraz w widoku obrazu w systemie Android?

ImageView iv= (ImageView)findViewById(R.id.img_selected_image); 
String path = getApplication().getFilesDir().getAbsolutePath(); 
InputStream is = new FileInputStream(path + "/apple.png"); 
Drawable icon = new BitmapDrawable(is); 
Log.i("Fnord", "width="+icon.getIntrinsicWidth()+ 
    " height="+icon.getIntrinsicHeight()); 
iv.setImageDrawable(icon); 

Ale kiedy go uruchomić, to powiedział, że nie ma żadnego obrazu przez apple.png nazwie w data/data/package-name/files. Myślę, że umieszczam mój obraz w niewłaściwym miejscu. Gdzie powinienem umieścić mój obraz?

+0

Musisz również upewnić się, że obraz nie zostanie rozciągnięty https://themillibit.wordpress.com/2017/09/25/why-are-my-bitmaps-all-stretched/ –

Odpowiedz

51

możesz bezpośrednio podać nazwę obrazu w swoim obrazie jako iv.setImageResource(R.drawable.apple);, która powinna być nim.

+0

masz na myśli, że powinien po prostu napisać: ImageView iv = (ImageView) findViewById (R.id.img_selected_image); iv.setImageResource (R.drawable.apple); inny kod nie potrzebujesz? – shadi

+0

Tak, inny kod nie jest wymagany, ale proszę dodać obraz do 'res> drawable' i wykonać polecenie' Clean' na projekcie, aby było generowane w pliku 'R.java' (automatycznie) w celu odniesienia. – Anuj

+0

Czy powinienem ręcznie utworzyć folder do rysowania? – shadi

2

Obrazy, które umieścisz w res/drawable, są obsługiwane przez Androida. Nie ma potrzeby, aby obraz był taki sam, jak Ty. w twoim przypadku można po prostu zadzwonić iv.setImageRessource(R.drawable.apple)

aby tylko uzyskać obraz (a nie dodając go do ImageView bezpośrednio), można nazwać Context.getRessources().getDrawable(R.drawable.apple) aby uzyskać obraz

7

użyć następującego kodu,

iv.setImageResource(getResources().getIdentifier("apple", "drawable", getPackageName())); 
1
 ImageView iv= (ImageView)findViewById(R.id.img_selected_image); 
     public static int getDrawable(Context context, String name)//method to get id 
     { 
     Assert.assertNotNull(context); 
     Assert.assertNotNull(name); 
     return context.getResources().getIdentifier(name, //return id 
      "your drawable", context.getPackageName()); 
     } 
     image.setImageResource(int Id);//set id using this method 
2
// take variable of imageview 

private ImageView mImageView; 

//bind imageview with your xml's id 

mImageView = (ImageView)findViewById(R.id.mImageView); 

//set resource for imageview 

mImageView.setImageResource(R.drawable.your_image_name); 
4

Zamiast ustawiać zasób rozciągliwej poprzez kod w swojej klasie aktywności można także ustawić w układzie XML:

Kod jest następujący:

<ImageView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:src="@drawable/apple" /> 
0

Jeśli utworzono ImageView z Java klasy

ImageView img = new ImageView(this); 

//Here we are setting the image in image view 
img.setImageResource(R.drawable.my_image); 
1

jeśli u chcą, aby ustawić obiekt bitmapy do obrazu zdaniem tutaj jest prosta dwa line`

Bitmap bitmap=BitmapFactory.decodeResource(getResources(),R.drawable.sample_drawable_image); 
image.setImageBitmap(bitmap); 
Powiązane problemy