Gallery

-- 声明一个baseAdapter的子类 --
BaseAdapter重要方法:
public int getCount() ——返回已定义的数据源的总数量
public Object getItem(int position)/public Long getItemId(int position) ——告诉适配器取得目前容器中的数据ID和对象
public View getView(int position,View convertView,ViewGroup parent) ——取得目前欲显示的图像View,传入数组ID使之读取与成像


---*如下(不能循环切换图片)*---
public class imageAdapter extends BaseAdapter{
private int res[];
private Context context;
public imageAdapter(int res[],Context context) {
// TODO 自动生成的构造函数存根
this.res=res;
this.context=context;
}

//返回数据源的数量
public int getCount() {
// TODO 自动生成的方法存根
return res.length;
}
//返回Item对于的数据源的角标信息
public Object getItem(int arg0) {
// TODO 自动生成的方法存根
return res[arg0];
}
//返回position
public long getItemId(int position) {
// TODO 自动生成的方法存根
return position;
}


public View getView(int position, View convertView, ViewGroup parent) {
// TODO 自动生成的方法存根
ImageView imageView = new ImageView(context);
imageView.setBackgroundResource(res[position]);
imageView.setLayoutParams(new Gallery.LayoutParams(200, 200));
imageView.setScaleType(ScaleType.FIT_XY);
return imageView;
}


}
------**实现无线循环*-------
public int getCount() {
// TODO 自动生成的方法存根
//return res.length;
return Integer.MAX_VALUE;//最大整数
}
public View getView(int position, View convertView, ViewGroup parent) {
// TODO 自动生成的方法存根
ImageView imageView = new ImageView(context);
imageView.setBackgroundResource(res[position]%(res.length));
imageView.setLayoutParams(new Gallery.LayoutParams(200, 200));
imageView.setScaleType(ScaleType.FIT_XY);
return imageView;
}
----------------需要改Gallery的布局---------------
imageView.setLayoutParams(new Gallery.LayoutParams(400, 400));


为什么是Gallery的layoutParams?
eg:
textView.setLayoutParams(new TextSwitcher.LayoutParams(
    LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
 
为什么要用TextSwitcher的LayoutParams呢。查一查API,可以看到这么一句话These supply parameters to the parent of this view specifying how it should be arranged。
 
也就是说一定要用父控件的LayoutParams。如果父控件是LinearLayout,当然就必须写成LinearLayout.LayoutParams
 
LayoutParams有多个控件的类,要引用哪个类关键是要看父控件是什么样的view控件.


---------------------ScaleType---------------------------
ImageView.ScaleType设置

1.图解:
ImageView的Scaletype决定了图片在View上显示时的样子,如进行何种比例的缩放,及显示图片的整体还是部分,等等。
设置的方式包括:
1. 在layout xml中定义android:scaleType="CENTER"
2. 或在代码中调用imageView.setScaleType(ImageView.ScaleType.CENTER);


FIT_XY
不按比例缩放图片,目标是把图片塞满整个View。


ImageView.ScaleType共八种:
1·ImageView.ScaleType.center:图片位于视图中间,但不执行缩放。
2·ImageView.ScaleType.CENTER_CROP 按统一比例缩放图片(保持图片的尺寸比例)便于图片的两维(宽度和高度)等于或者大于相应的视图的维度
3·ImageView.ScaleType.CENTER_INSIDE按统一比例缩放图片(保持图片的尺寸比例)便于图片的两维(宽度和高度)等于或者小于相应的视图的维度
4·ImageView.ScaleType.FIT_CENTER缩放图片使用center
5·ImageView.ScaleType.FIT_END缩放图片使用END
6·ImageView.ScaleType.FIT_START缩放图片使用START
7·ImageView.ScaleType.FIT_XY缩放图片使用XY
8·ImageView.ScaleType.MATRIX当绘制时使用图片矩阵缩放

---------------**gallery的onItemSelectListener**-----------------------------
判断点击了哪个图片
--------*ImageSwitcher**-----------
 implements OnItemSelectedListener,ViewFactory
---------------------------------------------------
gallery.setOnItemSelectedListener(this);
        image.setFactory(this);//imageSwitcher加载一个工厂,传入factory的对象
        //为imageSwitcher加入动画效果,android.R.anim.xxx是本地的动画效果
        image.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));
        image.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));
------------------------------------------------------
public View makeView() {
// TODO 自动生成的方法存根
ImageView imageView = new ImageView(this);
imageView.setScaleType(ScaleType.FIT_CENTER);//按照原比例横向纵向拉伸,保持居中
return imageView;
}
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO 自动生成的方法存根
//imageView.setBackgroundResource(res[position%(res.length)]);
image.setBackgroundResource(res[arg2%(res.length)]);

}
public void onNothingSelected(AdapterView<?> arg0) {
// TODO 自动生成的方法存根

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值