文档章节

轮播

小情绪在洒脱
 小情绪在洒脱
发布于 2016/07/29 14:03
字数 309
阅读 5
收藏 0

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

import com.example.looper1409.adapter.LooperAdapter;
import com.example.looper1409.constant.ImageUri;
import com.nostra13.universalimageloader.core.ImageLoader;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.SearchViewCompat.OnQueryTextListenerCompat;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.RadioButton;
import android.widget.RadioGroup;

public class MainActivity extends Activity {

    private ViewPager mViewPager;
    private RadioGroup mRadioGroup;
    private List<ImageView> mImageViewList;
    private ImageLoader mImageLoader;
    
    private Handler mHandler = new Handler(){
        public void handleMessage(android.os.Message msg) {
            //翻页
            mViewPager.setCurrentItem(mViewPager.getCurrentItem() + 1);
            //调用下次
            sendMessageDelay();
        };
    };

    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mImageLoader = ImageLoader.getInstance();
        // 查找view
        initViews();
        //自动播放
        sendMessageDelay();
    }
    
    private void sendMessageDelay(){
        mHandler.sendEmptyMessageDelayed(0, 2000);
    }

    private void initViews() {
        mViewPager = (ViewPager) findViewById(R.id.vp);
        mRadioGroup = (RadioGroup) findViewById(R.id.rg);

        initImageViews();
        mViewPager.setAdapter(new LooperAdapter(mImageViewList));

        initDots();
        
        mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageSelected(int index) {
                //分页指示器跟着动
                mRadioGroup.check(index % ImageUri.images.length);
            }
            
            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
            }
            
            @Override
            public void onPageScrollStateChanged(int arg0) {
            }
        });
    }

    private void initDots() {

        int wrap = RadioGroup.LayoutParams.WRAP_CONTENT;
        RadioGroup.LayoutParams params = new RadioGroup.LayoutParams(wrap, wrap);
        params.leftMargin = 5;

        for (int i = 0; i < ImageUri.images.length; i++) {
            // 创建一个单选按钮
            RadioButton rb = new RadioButton(this);
            rb.setId(i);
            // 设置按钮图片
            rb.setButtonDrawable(R.drawable.x_dot_selector);
            // 添加到组里
            if (i == 0) {
                mRadioGroup.addView(rb);
            } else {
                mRadioGroup.addView(rb, params);
            }
        }
        // 默认选中第一个
        mRadioGroup.check(0);
    }

    private void initImageViews() {
        mImageViewList = new ArrayList<ImageView>();
        for (int i = 0; i < ImageUri.images.length; i++) {
            ImageView iv = new ImageView(this);
            //添加touch事件
            iv.setOnTouchListener(new ImageTouchEvent());
            iv.setScaleType(ScaleType.FIT_XY);
            // 加载图片
            mImageLoader.displayImage(ImageUri.images[i], iv);
            // 添加到list中
            mImageViewList.add(iv);
        }
    }
    
    class ImageTouchEvent implements View.OnTouchListener {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                //按下时,停止播放
                mHandler.removeCallbacksAndMessages(null);
                break;
            case MotionEvent.ACTION_CANCEL:
            case MotionEvent.ACTION_UP:
                //抬起时,继续播放
                sendMessageDelay();
                break;
            }
            return true;
        }
    }

}

 

© 著作权归作者所有

共有 人打赏支持
上一篇: 路径
下一篇: QQ登录--net包
小情绪在洒脱
粉丝 3
博文 18
码字总数 19251
作品 0
海淀
程序员
私信 提问
关于图片轮播图的一个简单实例 以及实例中发现问题

1.最近在学习JS的过程中,为了巩固水平做了一个简单的轮播图,以及在做的过程中发现一些问题(未解决!希望可以有大佬可以解释这个问题) 2.代码如下:

前端二弟
05/17
0
0
4.22、Bootstrap V4自学之路-----内容---轮播

示例 <div id="carousel-example-generic" class="carousel slide" data-ride="carousel"> <ol class="carousel-indicators"> <li data-target="#carousel-example-generic" data-slide-to="......

Asktao
2016/03/25
105
0
ys152452/swiper-in-vue

轮播组件 当前可配置功能 基础轮播 宽度高度设置带单位 自动轮播 分页器 分页器自定义 前进后退按钮 前进后退按钮自定义 loop循环 懒加载 多栏轮播 多栏轮播间隔设置 垂直、水平方向轮播 卡片...

ys152452
2017/12/18
0
0
写一个轮播图,学会 React Native

我学习 Web 的第一课,就是学习写一个轮播图,在写轮播图时自然地将 html、css、js、DOM、组件设计等各方面简单的知识点给串起来了。学习 React Native 的时候,也自然用起了这个思路,挺好用...

穿越过来的键盘手
07/10
0
0
手把手教你用原生JavaScript造轮子(2)——轮播图

通过上一篇文章的学习,我们基本掌握了一个轮子的封装和开发流程。那么这次将带大家开发一个更有难度的项目——轮播图,希望能进一步加深大家对于面向对象插件开发的理解和认识。 So, Let's ...

csdoker
08/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Iris框架

1、安装iris: $ go get -u github.com/kataras/iris 2、golang iris web项目热重启 # 安装rizla包 $ go get -u github.com/kataras/rizla # 热重启方式启动iris项目 $ rizla main.go......

Liens
14分钟前
3
0
初探sentinel实践思考

简单说下, sentinel的优势: 友好的控制面板,支持实时监控 多种限流。支持QPS限流,线程数限流,多种限流策略,如:直接拒绝,匀速模式(漏斗),冷启动(如设置限制1000,延迟10秒,那第一...

爱吃大肉包
16分钟前
4
0
转:MongDB分页查询

找到了一篇关于MongDB分页查询的博客 https://www.cnblogs.com/wslook/p/9275861.html

_liucui_
17分钟前
1
0
《边缘云计算技术及标准化白皮书》

12月12日,第八届中国云计算标准和应用大会在北京隆重召开,工业和信息化部党组成员,总工程师张峰先生,中国工程院副院长陈左宁女士,中国工程院院士沈昌祥先生,中国电子技术标准化研究院院...

阿里云官方博客
22分钟前
1
0
网站安全公司对于网站逻辑漏洞的修复方案分享

在网站安全的日常安全检测当中,我们SINE安全公司发现网站的逻辑漏洞占比也是很高的,前段时间某酒店网站被爆出存在高危的逻辑漏洞,该漏洞导致酒店的几亿客户的信息遭泄露,包括手机号,姓名...

网站安全
26分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部