轮播
轮播
小情绪在洒脱 发表于1年前
轮播
  • 发表于 1年前
  • 阅读 5
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

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;
        }
    }

}

 

共有 人打赏支持
粉丝 4
博文 18
码字总数 19251
×
小情绪在洒脱
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: