2013-07-03 81 views
-1

我是新來的機器人。如何從圖庫view.i中彈出所選圖像附加了我的編碼。彈出的圖像onItemClick從圖庫

public class mygallerycode extends Activity 
{ 
    Integer[] a={R.drawable.hotel1,R.drawable.hotel2,R.drawable.hotel3}; 

    Gallery gallery; 
    ImageView imageview; 

    public void onCreate(Bundle bb) { 
     super.onCreate(bb); 
     setContentView(R.layout.mygallery); 
     gallery=(Gallery)findViewById(R.id.gallery1); 
     gallery.setAdapter(new ImageAdapter(this)); 

     imageview=(ImageView)findViewById(R.id.imageView1); 

     gallery.setOnItemClickListener(new OnItemClickListener() 
     { 
     public void onItemClick(AdapterView<?> parent, View v, 
     int position, long id) 
     { 
     Toast.makeText(getBaseContext(),"picture" + (position+1) +"selected",Toast.LENGTH_SHORT).show(); 
     //imageview.setImageResource(a[position]); 


     } 
     }); 
    } 
     class ImageAdapter extends BaseAdapter 
     { 

      private Context context; 
      private int itemBackground; 

      public ImageAdapter(Context c) 
      { 
       context = c; 
       //---setting the style--- 
       TypedArray ta = obtainStyledAttributes(R.styleable.gallery1); 
       itemBackground = ta.getResourceId(
       R.styleable.gallery1_android_galleryItemBackground, 1); 
       ta.recycle(); 

      } 

      @Override 
      public int getCount() { 
       // TODO Auto-generated method stub 
       return a.length; 
      } 

      @Override 
      public Object getItem(int position) { 
       // TODO Auto-generated method stub 
       return position; 
      } 

      @Override 
      public long getItemId(int position) { 
       // TODO Auto-generated method stub 
       return position; 
      } 

      @Override 
      public View getView(int position, View convertView, 
        ViewGroup parent) { 
       // TODO Auto-generated method stub 
       ImageView imageView = new ImageView(context); 
       imageView.setImageResource(a[position]); 
       imageView.setScaleType(ImageView.ScaleType.FIT_XY); 
       imageView.setLayoutParams(new Gallery.LayoutParams(150, 120)); 
       imageView.setBackgroundResource(itemBackground); 
       return imageView; 
      } 

     } 
    } 
+0

你的問題是什麼? –

+0

「popup」是什麼意思? –

回答

1

適用於相對較小圖像的解決方案。

如果將加載大量的圖像,那麼你應該閱讀http://developer.android.com/training/displaying-bitmaps/load-bitmap.html(看看decodeSampledBitmapFromResourcecalculateInSampleSize方法和使用的AsyncTask)


但對於較小的圖像這裏是一個可能的解決方案:

mygallerycode活動類:

public class mygallerycode extends Activity 
{ 
    Integer[] a={R.drawable.hotel1,R.drawable.hotel2,R.drawable.hotel3}; 

    Gallery gallery; 
    ImageView imageview; 

    public void onCreate(Bundle bb) { 
     super.onCreate(bb); 
     setContentView(R.layout.mygallery); 
     gallery=(Gallery)findViewById(R.id.gallery1); 
     gallery.setAdapter(new ImageAdapter(this)); 

     imageview=(ImageView)findViewById(R.id.imageView1); 

     gallery.setOnItemClickListener(new OnItemClickListener() 
     { 
     public void onItemClick(AdapterView<?> parent, View v, 
     int position, long id) 
     { 
      showPopupImage(a[position]); 
     } 
     }); 
    } 

    private void showPopupImage(Integer imageResource) { 
     AlertDialog.Builder imageDialog = new AlertDialog.Builder(this); 
     LayoutInflater inflater = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE); 

     View layout = inflater.inflate(R.layout.custom_fullimage_dialog, 
       (ViewGroup) findViewById(R.id.layout_root)); 
     ImageView image = (ImageView) layout.findViewById(R.id.fullimage); 
     image.setImageResource(imageResource); 
     imageDialog.setView(layout); 
     imageDialog.setCancelable(true); 


     imageDialog.create(); 
     imageDialog.show(); 
    } 

     class ImageAdapter extends BaseAdapter 
     { 

      private Context context; 
      private int itemBackground; 

      public ImageAdapter(Context c) 
      { 
       context = c; 
       //---setting the style--- 
       TypedArray ta = obtainStyledAttributes(R.styleable.gallery1); 
       itemBackground = ta.getResourceId(
       R.styleable.gallery1_android_galleryItemBackground, 1); 
       ta.recycle(); 

      } 

      @Override 
      public int getCount() { 
       // TODO Auto-generated method stub 
       return a.length; 
      } 

      @Override 
      public Object getItem(int position) { 
       // TODO Auto-generated method stub 
       return position; 
      } 

      @Override 
      public long getItemId(int position) { 
       // TODO Auto-generated method stub 
       return position; 
      } 

      @Override 
      public View getView(int position, View convertView, 
        ViewGroup parent) { 
       // TODO Auto-generated method stub 
       ImageView imageView = new ImageView(context); 
       imageView.setImageResource(a[position]); 
       imageView.setScaleType(ImageView.ScaleType.FIT_XY); 
       imageView.setLayoutParams(new Gallery.LayoutParams(150, 120)); 
       imageView.setBackgroundResource(itemBackground); 
       return imageView; 
      } 

     } 
    } 

custom_fullimage_dialog XML佈局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:id="@+id/layout_root" android:orientation="horizontal" 
       android:layout_width="fill_parent" android:layout_height="fill_parent" 
       android:padding="10dp"> 
    <ImageView android:id="@+id/fullimage" android:layout_width="fill_parent" 
       android:layout_height="fill_parent"> 
    </ImageView> 
</LinearLayout> 

如果你想跳過XML佈局出於某種原因,那麼你可以做一切在一個方法(只是從Java代碼代替上面這個showPopupImage方法):

private void showPopupImage(Integer imageResource) { 
    AlertDialog.Builder imageDialog = new AlertDialog.Builder(this); 
    ImageView image = new ImageView(this); 
    image.setImageResource(imageResource); 
    imageDialog.setView(image); 
    imageDialog.setCancelable(true); 
    imageDialog.create(); 
    imageDialog.show(); 
} 
+0

謝謝。這種方法工作得很好。但我不知道如何在全屏幕中彈出圖像。 – Ramya