您好,登錄后才能下訂單哦!
本文實例講述了Android開發中畫廊視圖Gallery的兩種使用方法。分享給大家供大家參考,具體如下:
第一種方法:
第一步:設計xml布局文件
代碼如下:main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Gallery android:id="@+id/myGallery" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:spacing="3px" android:text="@string/hello" /> </LinearLayout>
第二步:自定義一個適配器,這個適配器繼承BaseAdapter這個類
代碼如下:
package net.loonggg.gallery; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.widget.BaseAdapter; import android.widget.Gallery; import android.widget.ImageView; public class ImageGalleryAdapter extends BaseAdapter { private Context context; // 里面所有的方法表示的是可以根據指定的顯示圖片的數量,進行每個圖片的處理 private int[] image = new int[] { R.drawable.ispic_a, R.drawable.ispic_b, R.drawable.ispic_c, R.drawable.ispic_d, R.drawable.ispic_e }; public ImageGalleryAdapter(Context context) { this.context = context; } public int getCount() { // 取得要顯示內容的數量 return image.length; } public Object getItem(int position) { // 每個資源的位置 return image[position]; } public long getItemId(int position) { // 取得每個項的ID return image[position]; } // 將資源設置到一個組件之中,很明顯這個組件是ImageView public View getView(int position, View convertView, ViewGroup parent) { ImageView iv = new ImageView(context); iv.setBackgroundColor(0xFFFFFFFF); iv.setImageResource(image[position]);// 給ImageView設置資源 iv.setScaleType(ImageView.ScaleType.CENTER);// 設置對齊方式 iv.setLayoutParams(new Gallery.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); return iv; } }
第三步:主方法:
package net.loonggg.gallery; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Gallery; import android.widget.Toast; public class GalleryActivity extends Activity { private Gallery myGallery; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); myGallery = (Gallery) findViewById(R.id.myGallery); myGallery.setAdapter(new ImageGalleryAdapter(this)); myGallery.setOnItemClickListener(new OnItemClickListenerImpl()); } private class OnItemClickListenerImpl implements OnItemClickListener { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(GalleryActivity.this, String.valueOf(position), Toast.LENGTH_SHORT).show(); } } }
第二種方法:
第一步:設計xml布局文件
代碼如下:main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="bottom" android:orientation="vertical" > <ImageSwitcher android:id="@+id/is" android:layout_width="fill_parent" android:layout_height="wrap_content" > </ImageSwitcher> <Gallery android:id="@+id/myGallery" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:spacing="3px" /> </LinearLayout>
gallery_item.xml文件:
代碼如下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#FFFFFF" android:orientation="horizontal" > <ImageView android:id="@+id/iv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="center" /> </LinearLayout>
第二步:MainActivity
代碼如下:
package net.loonggg.gallery2; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.ViewGroup.LayoutParams; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Gallery; import android.widget.ImageSwitcher; import android.widget.ImageView; import android.widget.SimpleAdapter; import android.widget.ViewSwitcher.ViewFactory; public class MainActivity extends Activity { private ImageSwitcher is; private Gallery gallery; private SimpleAdapter adapter; private List<Map<String, Integer>> list = new ArrayList<Map<String, Integer>>(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); is = (ImageSwitcher) findViewById(R.id.is); is.setFactory(new ViewFactoryImpl()); initAdapter(); gallery = (Gallery) findViewById(R.id.myGallery); gallery.setAdapter(adapter); // 為gallery設置合適的適配器 gallery.setOnItemClickListener(new OnItemClickListenerImpl()); } public class OnItemClickListenerImpl implements OnItemClickListener { // gallery的點擊事件 @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Map<String, Integer> map = (Map<String, Integer>) parent .getAdapter().getItem(position); is.setImageResource(map.get("image")); } } public void initAdapter() { // 這個方法的功能是:從R.java文件中獲取圖片資源的id,如果資源圖片數量比較多,用數組的方法一一定義,就不太合適,這種方法最好了。 Field[] fields = R.drawable.class.getDeclaredFields(); for (int x = 0; x < fields.length; x++) { if (fields[x].getName().startsWith("ispic_")) { // 根據圖片的名稱取出想要的圖片 Map<String, Integer> map = new HashMap<String, Integer>(); try { map.put("image", fields[x].getInt(R.drawable.class)); } catch (Exception e) { e.printStackTrace(); } list.add(map); } } adapter = new SimpleAdapter(MainActivity.this, list, R.layout.grid_item, new String[] { "image" }, new int[] { R.id.iv }); } public class ViewFactoryImpl implements ViewFactory { @Override public View makeView() { ImageView iv = new ImageView(MainActivity.this); iv.setBackgroundColor(0xFFFFFFFF); iv.setScaleType(ImageView.ScaleType.CENTER); iv.setLayoutParams(new ImageSwitcher.LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); return iv; } } }
更多關于Android相關內容感興趣的讀者可查看本站專題:《Android開發入門與進階教程》、《Android調試技巧與常見問題解決方法匯總》、《Android基本組件用法總結》、《Android視圖View技巧總結》、《Android布局layout技巧總結》及《Android控件用法總結》
希望本文所述對大家Android程序設計有所幫助。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。