- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.previewphoto);
- getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, //全屏顯示
- WindowManager.LayoutParams.FLAG_FULLSCREEN);
-
- ImageList=getSD();
- list = ImageList.toArray(new String[ImageList.size()]);
-
- //設定Switcher
- mSwitcher = (ImageSwitcher) findViewById(R.id.imageSwitcher);
- mSwitcher.setFactory((ViewFactory) this);
- //設定載入Switcher的模式
- mSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,
- android.R.anim.slide_in_left));
- //設定輸出Switcher的模式
- mSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,
- android.R.anim.slide_out_right));
-
-
- final Gallery previewphoto = (Gallery) findViewById(R.id.gallery);
-
- //新增ImageAdapter並設定给Gallery
- previewphoto.setAdapter(new ImageAdapter(this,getSD()));
-
- previewphoto.setOnItemSelectedListener(this);
- //設定一個itemclickListener事件
- previewphoto.setOnItemClickListener(new OnItemClickListener()
- {
- public void onItemClick(AdapterView<?> parent,
- View v, int position, long id)
- {
- int pos = position+1;
- Toast.makeText(PreviewPhoto.this, "第"+pos+"張照片", Toast.LENGTH_SHORT).show();
-
- }
- });
-
- }
複製代碼- private List<String> getSD()
- {
- String PhotoFile;
- /* 設定目前所在路徑 */
- List<String> it=new ArrayList<String>();
- File f=new File(PhotoFile); //SDcard路徑
- File[] files=f.listFiles();
-
- /* 將所有文件存入ArrayList中 */
- for(int i=0;i<files.length;i++)
- {
- file=files[i];
- if(getImageFile(file.getPath()))
- it.add(file.getPath());
- }
- return it;
- }
-
- private boolean getImageFile(String fName)
- {
- boolean re;
-
- // 取得擴展名
- String end=fName.substring(fName.lastIndexOf(".")+1,
- fName.length()).toLowerCase();
-
- // 按擴展名的類型决定MimeType
- if(end.equals("jpg")||end.equals("gif")||end.equals("png")
- ||end.equals("jpeg")||end.equals("bmp"))
- {
- re=true;
- }
- else
- {
- re=false;
- }
- return re;
- }
- //改寫BaseAdapter自定義一ImageAdapter class
- public class ImageAdapter extends BaseAdapter
- {
-
- int mGalleryItemBackground;
- private Context mContext;
- private List<String> lis;
-
-
- public ImageAdapter(Context c,List<String> li)
- {
-
- mContext = c;
- lis=li;
- /* 使用res/values/attrs.xml中的<declare-styleable>定義
- * 的Gallery属性.*/
- TypedArray a = obtainStyledAttributes(R.styleable.A_Gallery);
- //取得Gallery属性的Index id
- mGalleryItemBackground = a.getResourceId(
- R.styleable.A_Gallery_android_galleryItemBackground, 0);
- //讓對象的styleable属性能夠反覆使用
- a.recycle();
-
- }
-
-
- public int getCount()
- {
-
- return lis.size();
- }
-
-
- public Object getItem(int position)
- {
- return position;
- }
-
-
- public long getItemId(int position)
- {
-
- return position;
- }
-
-
- public View getView(final int position, View convertView,
- ViewGroup parent)
- {
- //產生ImageView
- ImageView imageview = new ImageView(mContext);
- //設定圖片给imageView
- Bitmap bm = BitmapFactory.decodeFile(lis.get(position).toString());
- imageview.setImageBitmap(bm);
- //重新設定圖片的寬高
- imageview.setScaleType(ImageView.ScaleType.FIT_CENTER);
- //重新設定Layout的寬高
- imageview.setLayoutParams(new Gallery.LayoutParams(150,100));
- imageview.setBackgroundResource(mGalleryItemBackground);
- //設定Gallery背景圖
- //傳回imageView
- final Gallery gallery = (Gallery)findViewById(R.id.gallery);
- gallery.setOnItemLongClickListener(new OnItemLongClickListener() {
- public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
- // TODO Auto-generated method stub
- registerForContextMenu(gallery);
- notifyDataSetChanged();
- file_name = lis.get(position);
- return false;
- }
- });
- return imageview;
- }
-
- }
- public void onItemSelected(AdapterView<?> parent, View view, int position,
- long id) {
- String photoURL=list[position];
- Log.i("A",String.valueOf(position));
- mSwitcher.setImageURI(Uri.parse(photoURL));
- }
- public void onNothingSelected(AdapterView<?> parent) {
- // TODO Auto-generated method stub
-
- }
- public View makeView() {
-
- ImageView imageview = new ImageView(PreviewPhoto.this);
- imageview.setBackgroundColor(0xFF000000);
- imageview.setScaleType(ImageView.ScaleType.FIT_CENTER);
- imageview.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
-
- return imageview;
- }
複製代碼 |