简单的图片轮播

图片轮播代码实现
本文介绍了一种简单实用的图片轮播功能实现方法,并提供了完整的代码示例,包括布局文件、适配器类及主Activity等。通过使用ViewPager组件和自定义适配器实现了图片的循环展示效果。
因为最近事多,没怎么更新过,现在弄好了,更新一下我的小代码<图片的轮播>,说来这么小功能挺简单的,相信聪明机智的你一看就会!在此我想说一下,在日常学习工作当中注意**代码规范**是必须的,不光对自己,对他人,对团队,对以后的新人都有好处,这是一大神的总结http://blog.youkuaiyun.com/vipzjyno1/article/details/23542617

布局

RelativeLayout 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"
    tools:context="${relativePackage}.${activityClass}" >

    <android.support.v4.view.ViewPager
        android:id="@+id/viPager"
        android:layout_width="fill_parent"
        android:layout_height="130dip" />

</RelativeLayout>

适配器

package com.yuan.lun.adapter;

import java.util.List;

import com.yuan.lun.imagurl.ImageUrl;

import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

public class ImagAdapter extends PagerAdapter {

    private List<ImageView> list;
    public ImagAdapter(List<ImageView> list) {
        super();
        this.list = list;
    }

    @Override
    public int getCount() {
        return Integer.MAX_VALUE;
    }

    @Override
    public boolean isViewFromObject(View arg0, Object arg1) {
        return arg0==arg1;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        ImageView iv=list.get(position%ImageUrl.images.length);
        container.addView(iv);
        return iv;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((View) object);
    }
}

图片工具类

package com.yuan.lun.imagurl;

public class ImageUrl {
    public static final String[] images = {
            "assets://a.jpg",
            "assets://b.jpg",
            "assets://c.jpg",
            "assets://e.jpg",
            "assets://f.jpg",
            "assets://g.jpg",
            "assets://h.jpg",
            "assets://i.jpg",
            "assets://d.jpg" 
            };
}

主Activity

package com.yuan.lun;

import java.util.ArrayList;
import java.util.List;

import com.nostra13.universalimageloader.core.ImageLoader;
import com.yuan.lun.adapter.ImagAdapter;
import com.yuan.lun.imagurl.ImageUrl;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.view.ViewPager;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;

public class MainActivity extends Activity {

    private ImageLoader mLoader;
    private ViewPager viPager;
    private List<ImageView> mList;

    @SuppressLint("HandlerLeak")
    private Handler handler=new Handler(){
        public void handleMessage(android.os.Message msg) {
            //翻页
            viPager.setCurrentItem(viPager.getCurrentItem()+1);
            //调用下一次
            sendMagess();
        };
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //祛除状态栏
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_main);
        //调用iamgeloder
        mLoader = ImageLoader.getInstance();
        //初始化
        initView();

    }
    /**
     * 初始化
     */
    private void initView() {
        //ViewPager初始化
        viPager = (ViewPager) findViewById(R.id.viPager);
        //图片加载处理
        initImageView();
        //适配
        viPager.setAdapter(new ImagAdapter(mList));
        //发送
        sendMagess();
    }
    /**
     * 图片加载处理
     */
    private void initImageView() {
        //ArrayList集合
        mList = new ArrayList<ImageView>();
        //循环判断图片多少
        for (int i = 0; i < ImageUrl.images.length; i++) {
            //new一个ImageView
            ImageView iv=new ImageView(this);
            //图片点击事件
            iv.setOnTouchListener(new ImageTouchEvent());
            //充满屏幕
            iv.setScaleType(ScaleType.FIT_XY);
            //读取图片并缓存
            mLoader.displayImage(ImageUrl.images[i], iv);
            //添加入集合
            mList.add(iv);
        }
    }
    /**
     * 发送
     */
    private void sendMagess() {
        //handler发送时间
        handler.sendEmptyMessageDelayed(0, 3000);
    }

    /**
     * 点击事件
     */
    class ImageTouchEvent implements View.OnTouchListener{

        @SuppressLint("ClickableViewAccessibility")
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            //判断点击状态
            switch (event.getAction()) {
            //按下
            case MotionEvent.ACTION_DOWN:
                //按下时,停止播放
                handler.removeCallbacksAndMessages(null);
                break;
                //抬起
            case MotionEvent.ACTION_CANCEL:
            case MotionEvent.ACTION_UP:
                //抬起时,继续播放
                sendMagess();
                break;
            }
            return true;
        }

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值