2013-05-20 10 views
9

Verzeihen Sie mir für neue Wesen zu und meine teminology möglicherweise falsch:Set Image zu einem ziehbaren (Android)

Ich habe eine Reihe von Bildern in class1, wenn ein Bild ausgewählt wird seine ID class2 (Code übergeben wird unten) Ich zeige dann dieses Bild an und gebe die Wahl vor, es als Tapete einzustellen. Das Problem ist, mit dem unten stehenden Code brauche ich das a-Zeichen, um das Hintergrundbild zuzuweisen, nicht ImageView. Kann mir jemand eine Anleitung geben, wenn ich auf das tatsächliche Zeichen ziehe, wo ich "myWallpaperManager.setResource (brauche hier ein Zeichen);"

Vielen Dank im Voraus. Hoffe das macht Sinn, wie gesagt ich bin ein 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

Ich endete dabei: final Bitmap Bitmap = ((BitmapDrawable) Zeichenbar) .getBitmap(); Dann änderte ich zu: myWallpaperManager.setBitmap (Bitmap); es scheint ein bisschen langsam zu sein, aber es funktioniert jetzt. – nmiltner

Antwort

0

Ich habe gerade bemerkt, dass Sie resourceID passieren müssen nicht ziehbar, gibt es keine direkte Möglichkeit, resourceID von Image zu bekommen, warum Sie nicht versuchen, diesen Wert zu speichern und es dann passieren.

hoffe, das hilft und genießen Sie Ihre Arbeit

+0

so Drawable drawable1 = imageView.getDrawable(); Dann myWallpaperManager.setResource (R.drawable.drawable1); unten? – nmiltner

+0

Nein, ich habe nicht gesehen, dass es ResourceID, nicht Drawable sein muss. Siehe bearbeitete Antwort. –

28

zuerst die Auslosungs definieren, setzen Sie ihn dann in einem Image.

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

Noch ein Punkt, wenn irgendjemand 'getResources()' in einer benutzerdefinierten Adapterklasse benötigt, benutze 'context.getResources(). GetDrawable (R.drawable.imageView1);' wo 'Context context;' und wird im Konstruktor vom aufrufenden 'übergeben Aktivität/Fragment' – Paritosh

5

getResources().getDrawable(int id) Methode wurde in API-Ebene veraltet 22.

Sie Version überprüfen können dann diese Methoden verwenden:

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)); 
    } 

.