2011-07-28 20 views

cevap

11

kullanın Düzeni için bu XML bildirin: özel galerisi istedikleri gibi gallery.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent" android:background="@drawable/bg_child"> 

    <FrameLayout android:id="@+id/FrameLayout01" 
     android:layout_width="fill_parent" android:layout_height="fill_parent"> 
     <FrameLayout android:id="@+id/LinearLayout01" 
      android:layout_gravity="top" android:layout_height="50dp" android:layout_width="fill_parent"> 
      <TextView android:id="@+id/TextView01" 
       android:layout_width="wrap_content" android:layout_height="wrap_content" android:textStyle="bold" android:layout_gravity="center_vertical" android:layout_marginLeft="30dp" android:gravity="center_vertical" android:drawableLeft="@drawable/photo_frame" android:textColor="@color/grey" android:text="@string/photogallery_txt"></TextView> 
      <Button android:layout_gravity="right" android:id="@+id/btnMoreInfo" android:layout_marginRight="5dp" android:layout_marginTop="5dp" android:textStyle="bold" android:background="@drawable/my_child_button" android:layout_width="100dp" android:layout_height="40dp" android:text="@string/moreinfo_txt"></Button> 
     </FrameLayout> 
     <GridView xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/gridview" android:layout_width="fill_parent" 
      android:layout_height="fill_parent" android:columnWidth="90dp" 
      android:numColumns="auto_fit" android:verticalSpacing="10dp" 
      android:horizontalSpacing="10dp" android:stretchMode="columnWidth" 
      android:gravity="center" android:layout_gravity="bottom" 
      android:layout_marginTop="50dp"></GridView> 
    </FrameLayout> 
</LinearLayout> 

Etkinlik Dosyası GalleryPage.java

public class GalleryPage extends Activity { 

    // private Integer[] mImageIds = {R.drawable.splash, R.drawable.splash, 
    // R.drawable.splash, R.drawable.splash, R.drawable.splash, 
    // R.drawable.splash, R.drawable.splash}; 

    private static Uri[] mUrls = null; 
    private static String[] strUrls = null; 
    private String[] mNames = null; 
    private GridView gridview = null; 
    private Cursor cc = null; 
    private Button btnMoreInfo = null; 
    private ProgressDialog myProgressDialog = null; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 

     CommonFunctions.setLanguage(getBaseContext()); 

     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(R.layout.gallery); 
     btnMoreInfo = (Button) findViewById(R.id.btnMoreInfo); 
     // It have to be matched with the directory in SDCard 
     cc = this.getContentResolver().query(
       MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null, null, 
       null); 

     // File[] files=f.listFiles(); 
     if (cc != null) { 

      myProgressDialog = new ProgressDialog(GalleryPage.this); 
      myProgressDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
      myProgressDialog.setMessage(getResources().getString(R.string.pls_wait_txt)); 
      //myProgressDialog.setIcon(R.drawable.blind); 
      myProgressDialog.show(); 

      new Thread() { 
       public void run() { 
        try { 
         cc.moveToFirst(); 
         mUrls = new Uri[cc.getCount()]; 
         strUrls = new String[cc.getCount()]; 
         mNames = new String[cc.getCount()]; 
         for (int i = 0; i < cc.getCount(); i++) { 
          cc.moveToPosition(i); 
          mUrls[i] = Uri.parse(cc.getString(1)); 
          strUrls[i] = cc.getString(1); 
          mNames[i] = cc.getString(3); 
          //Log.e("mNames[i]",mNames[i]+":"+cc.getColumnCount()+ " : " +cc.getString(3)); 
         } 

        } catch (Exception e) { 
        } 
        myProgressDialog.dismiss(); 
       } 
      }.start(); 
     gridview = (GridView) findViewById(R.id.gridview); 
     gridview.setAdapter(new ImageAdapter(this)); 

     gridview.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View v, 
        int position, long id) { 
       Intent i = new Intent(GalleryPage.this, BigImage.class); 
       Log.e("intent : ", ""+position); 
       i.putExtra("imgUrls", strUrls); 
       i.putExtra("position", position); 
       startActivity(i); 
      } 
     }); 

     } 

     btnMoreInfo.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Intent i = new Intent(GalleryPage.this, ChildLogin.class); 
       startActivity(i); 
      } 
     }); 
    } 

    /** 
    * This class loads the image gallery in grid view. 
    * 
    */ 
    public class ImageAdapter extends BaseAdapter { 
     private Context mContext; 

     public ImageAdapter(Context c) { 
      mContext = c; 
     } 

     public int getCount() { 
      return cc.getCount(); 
     } 

     public Object getItem(int position) { 
      return null; 
     } 

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

     // create a new ImageView for each item referenced by the Adapter 
     public View getView(int position, View convertView, ViewGroup parent) { 
      View v = convertView; 
      LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      v = vi.inflate(R.layout.galchild, null); 

      try { 

       ImageView imageView = (ImageView) v.findViewById(R.id.ImageView01); 
       //imageView.setScaleType(ImageView.ScaleType.FIT_XY); 
       // imageView.setPadding(8, 8, 8, 8); 
       Bitmap bmp = decodeURI(mUrls[position].getPath()); 
       //BitmapFactory.decodeFile(mUrls[position].getPath()); 
       imageView.setImageBitmap(bmp); 
       //bmp. 
       TextView txtName = (TextView) v.findViewById(R.id.TextView01); 
       txtName.setText(mNames[position]); 
      } catch (Exception e) { 

      } 
      return v; 
     } 
    } 

    @Override 
    protected void onStart() { 
     // TODO Auto-generated method stub 
     super.onStart(); 
     FlurryAgent.onStartSession(this, "***"); 
    } 
    // @Override 
    // protected void onStop() { 
    // TODO Auto-generated method stub 
    // super.onStop(); 
    // FlurryAgent.onEndSession(this); 

    // } 

    /** 
    * This method is to scale down the image 
    */ 
    public Bitmap decodeURI(String filePath){ 

     Options options = new Options(); 
     options.inJustDecodeBounds = true; 
     BitmapFactory.decodeFile(filePath, options); 

     // Only scale if we need to 
     // (16384 buffer for img processing) 
     Boolean scaleByHeight = Math.abs(options.outHeight - 100) >= Math.abs(options.outWidth - 100); 
     if(options.outHeight * options.outWidth * 2 >= 16384){ 
      // Load, scaling to smallest power of 2 that'll get it <= desired dimensions 
      double sampleSize = scaleByHeight 
       ? options.outHeight/100 
       : options.outWidth/100; 
      options.inSampleSize = 
       (int)Math.pow(2d, Math.floor(
       Math.log(sampleSize)/Math.log(2d))); 
     } 

     // Do the actual decoding 
     options.inJustDecodeBounds = false; 
     options.inTempStorage = new byte[512]; 
     Bitmap output = BitmapFactory.decodeFile(filePath, options); 

     return output; 
    } 
} 
+0

R.layout.galchild eksik ... – Gomoku7

+20

'System.gc();' O_O –

+4

çok moloz, -1 bu –

1

Bu eğitici Hello Grid View, gridview ile Resim Galerisi oluşturma konusunda iyi bir temel örnek sağlar, ancak resim çekilebilir kaynaktır, gereksinim gereksiniminiz olarak genişletmeniz gerekir.

1

görünüyor Sizin için çok zaman alacaktır,

Çalışmanız için Custom Camera Gallery library'u almanızı öneririm.

Grid View'da Fotoğraflar/Videolar'ı istediğiniz gibi alacaksınız. [- Android Geliştiricileri Merhaba GridView Eğitim] (http://developer.android.com/guide/tutorials/views:

0
private static final int SELECT_PHOTO = 100; 
ImageView image; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    image = (ImageView) findViewById(R.id.imageView2); 
} 

public void pickAImage(View view) { 
    Intent photoPickerIntent = new Intent(Intent.ACTION_PICK); 
    photoPickerIntent.setType("image/*"); 
    startActivityForResult(photoPickerIntent, SELECT_PHOTO); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) { 
    super.onActivityResult(requestCode, resultCode, imageReturnedIntent); 

    switch (requestCode) { 
     case SELECT_PHOTO: 
      if (resultCode == RESULT_OK) { 
       Uri selectedImage = imageReturnedIntent.getData(); 
       InputStream imageStream = null; 

       try { 
        imageStream = getContentResolver().openInputStream(selectedImage); 
       } 
       catch (FileNotFoundException e) { 
        e.printStackTrace(); 
       } 

       Bitmap yourSelectedImage = BitmapFactory.decodeStream(imageStream); 
       image.setImageURI(selectedImage);// To display selected image in image view 
      } 
     } 
    } 
} 
İlgili konular