2013-05-20 20 views
9

Perdonami per essere una novità per e la mia teminology potrebbe non essere corretta:Set ImageView ad un disegnabile (Android)

Ho una serie di immagini in Class1, quando si seleziona un'immagine suo id viene passato al Class2 (codice sotto) Poi visualizzo quell'immagine e do l'opzione di impostarla come sfondo. Il problema è che, usando il codice qui sotto, ho bisogno di un drawable per assegnare lo sfondo, non ImageView. Qualcuno può darmi qualche consiglio nel riferire il drawable effettivo dove ho "myWallpaperManager.setResource (ho bisogno di un drawable qui);"

Grazie in anticipo. Spero che questo abbia senso, come ho detto sono un noob!

public class FullWallView extends Activity { 
private Button wallbutton; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.wallpaper_full); 

    // get intent data 
    Intent i = getIntent(); 

    // Selected image id 
    int position = i.getExtras().getInt("id"); 
    ImageAdapter imageAdapter = new ImageAdapter(this); 

    ImageView imageView = (ImageView) findViewById(R.id.full_wall_view); 
    imageView.setImageResource(imageAdapter.mThumbIds[position]); 

    //Making Button Clickable and setting the wallpaper 
    wallbutton = (Button) findViewById(R.id.apply); 
    wallbutton.setOnClickListener(new Button.OnClickListener() 
    { 

      @Override 
      public void onClick(View arg0) { 
      // TODO Auto-generated method stub 
      WallpaperManager myWallpaperManager 
      = WallpaperManager.getInstance(getApplicationContext()); 
      try { 
       myWallpaperManager.setResource(need a drawable here); 
      } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      } 

      }}); 
+0

Ho finito per fare questo: bitmap Bitmap finale = ((BitmapDrawable) disegnabile) .getBitmap(); Quindi ho cambiato: myWallpaperManager.setBitmap (bitmap); sembra essere un po 'lento, ma sta funzionando ora. – nmiltner

risposta

0

ho appena notato che è necessario passare resourceID non disegnabile, non c'è modo diretto per ottenere resourceID da ImageView, perché non si tenta di ricordare questo valore e poi passarlo.

Spero che questo aiuti e godetevi il vostro lavoro

+0

quindi Drawable drawable1 = imageView.getDrawable(); Then myWallpaperManager.setResource (R.drawable.drawable1); in basso? – nmiltner

+0

No, non ho visto che deve essere ResourceID, non Drawable. Vedi la risposta modificata. –

28

prima definire la Drawable, quindi impostarlo in un ImageView.

img=(ImageView)findViewById(R.id.imageview1); 
Drawable myDrawable = getResources().getDrawable(R.drawable.imageView1); 
img.setImageDrawable(myDrawable); 
+2

Un altro punto, se qualcuno richiede 'getResources()' nella classe dell'adattatore personalizzato, usa 'context.getResources(). GetDrawable (R.drawable.imageView1);' dove 'Contesto contesto;' e viene passato nel costruttore dalla chiamata ' Attività/Fragment' – Paritosh

5

getResources().getDrawable(int id) metodo è stata sconsigliata a livello di API 22.

È possibile controllare la versione quindi utilizzare questi metodi:

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { 
     imageView.setImageDrawable(getApplicationContext().getDrawable(R.drawable.myDrawable)); 
    } else { 
     imageView.setImageDrawable(getResources().getDrawable(R.drawable.myDrawable)); 
    } 

.

Problemi correlati