Gallery和ImageSwitcher
Gallery
- 设定数据源,Gallery 布局;
- 实例化 gallery;
- 自定义 ImageAdapter 图片适配器,并完成适配器的成员方法;
- 实例化 ImageAdapter 图片适配器;
- gallery加载适配器。
MainActivity.java
package com.example.administrator.stu_garry_imageswitcher;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Gallery;
public class MainActivity extends AppCompatActivity {
private int [] res = {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 ImageAdapater adapater;
private Gallery gallery;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gallery = (Gallery) findViewById(R.id.gallery); //实例化gallery
adapater = new ImageAdapater(res,this);
gallery.setAdapter(adapater); //加载适配器
}
}
Imagedapter.java
package com.example.administrator.stu_garry_imageswitcher;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
public class ImageAdapater extends BaseAdapter{
private int []res;
private Context context;
ImageAdapater(int[] res, Context context){ //通过构造函数传递对应的数据
this.res = res;
this.context = context;
}
//返回数据源文件中的内容数目
@Override
public int getCount() { //控制可同一方向滑动的最大值
return res.length; //返回数据源数组的大小
//return Integer.MAX_VALUE; //设置数据源大小为整形最大值
}
//获取图片内容
@Override
public Object getItem(int position) {
return res[position]; //返回当前图片内容
}
//获取图片ID
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView = new ImageView(context);
imageView.setBackgroundResource(res[position%res.length]); //设置缩略图片
imageView.setLayoutParams(new Gallery.LayoutParams(400,300)); //设定缩略图的宽、高
imageView.setScaleType(ImageView.ScaleType.FIT_XY); //设定缩放模式
return imageView;
}
}
ImagerSwitcher
MainActivity.java
...implements AdapterView.OnItemSelectedListener,ViewSwitcher.ViewFactory{ //ImageSwitch 使用ViewFactory 显示图片
...
private ImageSwitcher imageSwitcher;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gallery = (Gallery) findViewById(R.id.gallery);
adapater = new ImageAdapater(res,this);
imageSwitcher = (ImageSwitcher) findViewById(R.id.switcher);
gallery.setAdapter(adapater);
gallery.setOnItemSelectedListener(this);
imageSwitcher.setFactory(this);
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
imageSwitcher.setBackgroundResource(res[position]);
//设置进入动画效果--淡入
imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_in));
//设置进入动画效果--淡出
imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_out));
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
@Override
public View makeView() { //设置 ViewFactory
ImageView imageView = new ImageView(this);
imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
return imageView;
}
}