Gallery和ImageSwitcher
最后更新于:2022-04-01 14:27:18
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
}
}
~~~
效果图:
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-06_5704ccec53210.jpg)