2013-05-20 49 views
9

原諒我新來和我teminology可能是不正確的:當選擇的圖像的ID被傳遞到的Class2(代碼設置的ImageView的繪製(安卓)

我有Class1中,圖像陣列下面)我然後顯示該圖像,並給出選項將其設置爲壁紙。問題是,使用下面的代碼我需要一個可繪製的分配壁紙,而不是ImageView。有人可以給我一些指導,我參考了我的實際繪圖 「myWallpaperManager.setResource(需要在這裏繪製一個drawable);」

在此先感謝。希望這是有道理的,因爲我說我是一個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

我最終這樣做了: final Bitmap bitmap =((BitmapDrawable)drawable).getBitmap();然後我改爲: myWallpaperManager.setBitmap(bitmap); 它似乎有點慢,但它現在工作。 – nmiltner

回答

0

我剛纔注意到你需要傳遞RESOURCEID沒有繪製,沒有直接的辦法從ImageView的,你爲什麼不試着記住這個值,然後通過它得到RESOURCEID。

希望這有助於和喜歡你的工作

+0

所以Drawable drawable1 = imageView.getDrawable(); 然後myWallpaperManager.setResource(R.drawable.drawable1);在下面? – nmiltner

+0

不,我沒有看到它需要是ResourceID,而不是Drawable。見編輯的答案。 –

28

首先定義繪製對象,然後將其設置在ImageView的。

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

還有一點,如果有人需要定製適配器類中的'getResources()',請使用'context.getResources()。getDrawable(R.drawable.imageView1);'where'Context context;'並在構造函數中調用'活動/ Fragment' – Paritosh

5

getResources().getDrawable(int id)方法是在API層面棄用22

您可以檢查版本,那麼使用這些方法:

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