Gallery和ImageSwitcher ---------- 制作图片浏览器

Gallery和ImageSwitcher

  1. 设定数据源,Gallery 布局;
  2. 实例化 gallery;
  3. 自定义 ImageAdapter 图片适配器,并完成适配器的成员方法;
  4. 实例化 ImageAdapter 图片适配器;
  5. 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;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值