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)
';