ImageSwitcher组件的主要功能是完成图片的切换显示
常用的一些方法:imgeSwitcher(Context context):创建imgeSwitcher对象,setFactory(ViewSwitcher.ViewFactory factory ) :用于完成两个图片切换时的转换, setImageResource(int id): 设置图片资源ID,setInAnimation(Animation inanimation) :读取进ImageSwitcher时的动画效果,setOutAnimation((Animation outanimation) :消失时的动画效果。
如果要想真正的实现图片的切换操作,那么问题的关键就在于ViewFactory的使用上,它是ViewSwitcher的一个内部接口。
public static interface
ViewSwitcher.ViewFactory
在这个接口中有一个操作方法:
public abstract View makeView ()
这个方法的作用是创建一个View显示的组件。
public class MainActivity extends AppCompatActivity {
private Button button;
private Button nextBautton;
private ImageSwitcher imageSwitcher;
private int[] image = {R.drawable.kebi,R.drawable.kebi2,R.drawable.kobi3,R.drawable.kobi4,R.drawable.nba2,R.drawable.nba4};
private int floot = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageSwitcher = (ImageSwitcher)findViewById(R.id.imageSwitch_view);
nextBautton = (Button)findViewById(R.id.next);
button = (Button)findViewById(R.id.button);
imageSwitcher.setFactory(new ViewSwitcher.ViewFactory() {
@Override
public View makeView() {
ImageView imageView = new ImageView(MainActivity.this); //实例化图片信息
// 设置图片的属性
imageView.setScaleType(ImageView.ScaleType.CENTER);
imageView.setLayoutParams(new ImageSwitcher.LayoutParams( // 自适应图片大小
ActionBar.LayoutParams.FILL_PARENT, ActionBar.LayoutParams.FILL_PARENT)); // 定义组件
return imageView;
}
});
nextBautton.setOnClickListener(new View.OnClickListener() { //按钮监听事件
@Override
public void onClick(View v) {
imageSwitcher.setImageResource(image[floot++]); //设置显示的图图片id
checkButEnable(); // 按钮状态的设置
}
});
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
imageSwitcher.setImageResource(image[floot--]);
checkButEnable();
}
});
}
public void checkButEnable() { // 设置按钮状态
if (this.floot < this.image.length - 1) {
this.nextBautton.setEnabled(true); // 按钮可用
} else {
this.nextBautton.setEnabled(false); // 按钮不可用
}
if (this.floot == 0) {
this.button.setEnabled(false); // 按钮不可用
} else {
this.button.setEnabled(true); // 按钮可用
}
}
}
Gallery是一个用来按水平方向显示图片列表,可以用手指直接拖动图片左右移动的视图。Gallery只能水平显示一行,且Gallery列表中的图片会根据不同的拖动情况向左或向右移动,直到显示到最后一个图片为止。
Gallery一般使用Adapter提供要显示的数据,通常使用BaseAdapter类为Gallery组件提供数据。
(1)android:animationDuration
用于设置列表项切换时的动画持续时间
(2)android:gravity
用于设置对齐方式
(3)android:spacing
用于设置列表项之间的间距
(4)android:unselectedAlpha
用于设置没有选中的列表项的透明度
public class MainActivity extends AppCompatActivity {
private int[] image = {R.drawable.kebi,R.drawable.kebi2,R.drawable.kobi3,R.drawable.kobi4,R.drawable.nba2,R.drawable.nba4};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Gallery gallery = (Gallery)findViewById(R.id.gallery);
gallery.setAdapter(new mAdapter());
gallery.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { //监听Item
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(MainActivity.this,"you are select"+position,Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
public class mAdapter extends BaseAdapter{ //创建Adapter
@Override
public int getCount() {
return image.length;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView = new ImageView(MainActivity.this); //创建图片实例
imageView.setImageResource(image[position]);
imageView.setScaleType(ImageView.ScaleType.CENTER);
return imageView;
}
}
}