activity_main.xml:
~~~
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<Gallery
android:id="@+id/gallery"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<ImageSwitcher
android:id="@+id/imageSwitcher"
android:layout_marginTop="150dp"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ImageSwitcher>
</LinearLayout>
~~~
自定義的ImageAdapter:
~~~
public class ImageAdapter extends BaseAdapter {
private int[] res;
private Context context;
public ImageAdapter(int[] res,Context context) {
super();
this.res = res;
this.context=context;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return Integer.MAX_VALUE; //以便“無限”循環顯示(一般情況下滾動不到這個最大值)
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return res[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.setBackgroundResource(res[position%res.length]); //無限“循環”顯示
imageView.setLayoutParams(new Gallery.LayoutParams(200, 150)); //
imageView.setScaleType(ScaleType.FIT_XY); //設置拉伸效果
return imageView;
}
}
~~~
MainActivity.java
~~~
public class MainActivity extends Activity implements OnItemSelectedListener,ViewFactory{
//準備數據源
private int[] resIcon = { R.drawable.item1, R.drawable.item2,
R.drawable.item3, R.drawable.item4, R.drawable.item5,
R.drawable.item6, R.drawable.item7, R.drawable.item8,
R.drawable.item9, R.drawable.item10, R.drawable.item11,
R.drawable.item12 };
private Gallery gallery;
private ImageAdapter adapter;
private ImageSwitcher imageSwitcher;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gallery=(Gallery) findViewById(R.id.gallery);
imageSwitcher=(ImageSwitcher) findViewById(R.id.imageSwitcher);
//gallery加載適配器
adapter=new ImageAdapter(resIcon, this);
gallery.setAdapter(adapter);
//設置監聽器
gallery.setOnItemSelectedListener(this);
//ImageSwitcher
imageSwitcher.setFactory(this);
imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));
imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position,
long id) {
// imageView.setBackgroundResource(res[position%res.length]); //無限“循環”顯示
imageSwitcher.setBackgroundResource(resIcon[position%resIcon.length]);
}
@Override
public View makeView() {
// TODO Auto-generated method stub
ImageView imageView=new ImageView(this);
imageView.setScaleType(ScaleType.FIT_CENTER);
return imageView;
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
}
~~~
效果圖:

- 前言
- Java內部類
- 從一個View向一個Activity跳轉
- Android 與 SQLite
- Android工程A依賴B,B依賴C
- Android重要控件概覽(上)
- Installation error: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
- Android布局概覽
- 動態引用APK文件
- Android重要控件概覽(中)
- Android重要控件概覽(下)
- Gallery和ImageSwitcher
- Android之Toast
- Android之Dialog
- Android之Notification
- Android之Menu
- Android Menu中android:showAsAction屬性
- Android SharedPreferences存儲數據的使用方法
- Android手勢識別之GestureDetector
- 不同APP通過SharedPreferences傳遞數據(共享數據)
- 一個自定義的Topbar模板
- 關于Activity回收造成View選中不對應的問題
- Android之Fragment靜態加載