2012-11-02 72 views
1

我是android新手。我現在有一個要求。我需要在res/drawable文件夾中添加大約10個圖像,並且在運行應用程序時,我應該在listView上顯示此圖像。並且在選擇任何圖像時我應該在新活動中顯示此圖像應該能夠放大並縮小。請幫我解釋一下這個示例代碼。使用res文件夾中的可繪製圖像創建圖像庫

在此先感謝。

回答

6

這個例子用於創建Gallery,選擇一個並設置爲selectedImageView。 之後你可以用selectedImageView做所有事情。

public class MyActivity extends Activity{ 

    private int selectedImagePosition = 0; 
    private ImageView selectedImageView; 
    private List<Drawable> drawables; 
    private Gallery gallery;  


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     selectedImageView = (ImageView) view.findViewById(R.id.selected_imageview); 
     getDrawablesList(); 

     gallery = (Gallery) view.findViewById(R.id.Gallery); 
     gallery.setAdapter(new ImageAdapter(getActivity().getApplicationContext())); 

     gallery.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View v, final int position, long id) { 

     setSelectedImage(selectedImagePosition); 

    } 
    }); 



    private void getDrawablesList() { 
      drawables = new ArrayList<Drawable>(); 
      drawables.add(getResources().getDrawable(R.drawable.res1)); 
      drawables.add(getResources().getDrawable(R.drawable.res2)); 
      drawables.add(getResources().getDrawable(R.drawable.res3)); 
      drawables.add(getResources().getDrawable(R.drawable.res4)); 
     } 

    private void setSelectedImage(int selectedImagePosition) { 

      BitmapDrawable bd = (BitmapDrawable) drawables.get(selectedImagePosition); 
      Bitmap b = Bitmap.createScaledBitmap(bd.getBitmap(), (int) (bd.getIntrinsicHeight() * 0.9), (int) (bd.getIntrinsicWidth() * 0.7), false); 
      selectedImageView.setImageBitmap(b); 
      selectedImageView.setScaleType(ScaleType.FIT_XY); 

     } 
1
private ImageView selectedImageView; 
    private TextView _nameTextView; 
    private Gallery gallery; 
    Integer[] imageIDs = { R.drawable.hbath, R.drawable.hfood, 
     R.drawable.hmedicine, R.drawable.htherapy, R.drawable.htoilet, 
     R.drawable.hother }; 

@Override 
    public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
      selectedImageView = (ImageView) findViewById(R.id.imageSwitcher1); 
      _nameTextView = (TextView) findViewById(R.id.NameTextView); 
      gallery = (Gallery) findViewById(R.id.gallery1); 
      gallery.setAdapter(new ImageAdapter(this)); 
      gallery.setOnItemClickListener(new OnItemClickListener() { 
      gallery.setOnItemSelectedListener(new OnItemSelectedListener() { 

     public void onItemSelected(AdapterView<?> arg0, View arg1, 
       int position, long arg3) { 
      // TODO Auto-generated method stub 

      if (position == 0) { 
       selectedImageView 
         .setImageResource(R.drawable.hbathbackground); 
       _nameTextView.setText("Toilet"); 
      } else if (position == 1) { 
       selectedImageView 
         .setImageResource(R.drawable.hfoodbackground); 
       _nameTextView.setText("Food"); 
      } else if (position == 2) { 
       selectedImageView 
         .setImageResource(R.drawable.hmedicinebackground); 
       _nameTextView.setText("Medicine"); 
      } else if (position == 3) { 
       selectedImageView 
         .setImageResource(R.drawable.htherapybackground); 
       _nameTextView.setText("Therapy"); 
      } else if (position == 4) { 
       selectedImageView 
         .setImageResource(R.drawable.htoiletbackground); 
       _nameTextView.setText("Bath"); 
      } else if (position == 5) { 
       selectedImageView 
         .setImageResource(R.drawable.hotherbackground); 
       _nameTextView.setText("Other"); 
      } 

     } 

     public void onNothingSelected(AdapterView<?> arg0) { 
      // TODO Auto-generated method stub 

     } 
    }); 
} 

和ImageAdapter

public class ImageAdapter extends BaseAdapter { 
    private Context context; 
    private int itemBackground; 

    public ImageAdapter(Context c) { 
     context = c; 
     // ---setting the style--- 
     TypedArray a = obtainStyledAttributes(R.styleable.Gallery1); 
     itemBackground = a.getResourceId(
       R.styleable.Gallery1_android_galleryItemBackground, 0); 
     a.recycle(); 
    } 

    // ---returns the number of images--- 
    public int getCount() { 
     return imageIDs.length; 
    } 

    // ---returns the ID of an item--- 
    public Object getItem(int position) { 
     return position; 
    } 

    public long getItemId(int position) { 
     return position; 
    } 

    // ---returns an ImageView view--- 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ImageView imageView = new ImageView(context); 
     imageView.setImageResource(imageIDs[position]); 
     imageView.setBackgroundColor(0xFF000000); 
     // imgView.setImageBitmap(bitmap); 
     imageView.setScaleType(ImageView.ScaleType.FIT_XY); 
     imageView.setLayoutParams(new Gallery.LayoutParams(155, 235)); 
     imageView.setBackgroundResource(R.drawable.customborder2); 
     return imageView; 
    } 
} 
相關問題