2013-05-20 16 views
9

Wybaczcie za to nowy do mojego teminology mogą być nieprawidłowe:Set ImageView do rozciągliwej (Android)

Mam tablicę obrazów w Class1, gdy obraz jest wybrany jej id jest przekazywana do Class2 (kod poniżej) Następnie wyświetlam ten obraz i daje możliwość ustawienia go jako tapety. Problem polega na tym, że używając poniższego kodu potrzebuję rysowania, aby przypisać tapetę, a nie ImageView. Czy ktoś może dać mi wskazówki w odniesieniu do faktycznego losowania, gdzie mam "myWallpaperManager.setResource (potrzebna tutaj możliwość losowania);"

Z góry dziękuję. Mam nadzieję, że to ma sens, ponieważ powiedziałem, że jestem noobem!

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

Skończyło się na zrobieniu tego: końcowa mapa bitowa mapy bitowej = ((BitmapDrawable) do rysowania) .getBitmap(); Następnie zmieniono na: myWallpaperManager.setBitmap (bitmap); wydaje się być nieco powolny, ale teraz działa. – nmiltner

Odpowiedz

0

Właśnie zauważyłem, że trzeba zdać RESOURCEID nie rozciągliwej, nie ma bezpośredni sposób uzyskać RESOURCEID z ImageView, dlaczego nie spróbować zapamiętać tę wartość, a następnie przekazać go.

Nadzieja to pomaga i cieszyć swoją pracę

+0

so Drawable drawable1 = imageView.getDrawable(); Następnie myWallpaperManager.setResource (R.drawable.drawable1); poniżej? – nmiltner

+0

Nie, nie widziałem, że musi to być ResourceID, a nie Drawable. Zobacz edytowaną odpowiedź. –

28

najpierw zdefiniować rozciągliwej, a następnie ustawić go w ImageView.

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

Jeszcze jeden punkt, jeśli ktokolwiek wymaga 'getResources()' w niestandardowej klasie adaptera, użyj 'context.getResources(). GetDrawable (R.drawable.imageView1);' gdzie 'Context context;' i jest przekazywany w konstruktorze od wywołania ' Aktywność/fragment " – Paritosh

5

getResources().getDrawable(int id) metoda została zaniechana na poziomie API 22.

Można sprawdzić wersję następnie korzystać z tych metod:

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

.

Powiązane problemy