设为首页 加入收藏

TOP

ViewPager+handler实现轮播(一)
2017-10-12 11:29:09 】 浏览:4447
Tags:ViewPager handler 实现

先说下功能吧,随便设置一个网络图片链接的集合,作为图片的资源。我用ImageLoader来加载图片,在图片未加载完成时会ProgressBar加载状态

在Handler发送一个空消息来实现页面的轮播

我如下是代码我写在一个类中方面观察

 

补充1  我在scrollview下嵌套ViewPager 会发现VIewPager随便滑动的时候不好使,只有水平方向滑动才行

所以可以自定义MyScrollView

package com.example.huanshop.widget;

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.ScrollView;

public class MyScrollView extends ScrollView {

    private float xDistance;
    private float yDistance;
    private float xLast;
    private float yLast;

    public MyScrollView(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
    }

    public MyScrollView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        // TODO Auto-generated constructor stub
    }

    public MyScrollView(Context context, AttributeSet attrs) {
        super(context, attrs);
        // TODO Auto-generated constructor stub
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        switch (ev.getAction()) {
        case MotionEvent.ACTION_DOWN:
            xDistance = yDistance = 0.0f;
            xLast = ev.getX();
            yLast = ev.getY();
            break;
        case MotionEvent.ACTION_MOVE:
            final float curX = ev.getX();
            final float curY = ev.getY();
            xDistance += Math.abs(curX - xLast);
            yDistance += Math.abs(curY - yLast);
            if (xDistance > yDistance)
                return false;
            break;
        default:
            break;
        }
        return super.onInterceptTouchEvent(ev);
    }


}

 补充2  由于屏幕适配的因素而使小点在不同的机子上显示的大小不同达不到想要的效果

可以再用尺寸适配来处理下

    dp和px的关系: dp = px/设备密度
    float density = getResources().getDisplayMetrics().density;
    System.out.println("设备密度:" + density);

    320*240(0.75), 480*320(1),480*800(1.5),1280*720(2)

    values->dimens.xml  values-1280x720

public class DensityUtils {
    /**
     * 将dp转为px
     */
    public static int dp2px(Context ctx, float dp) {
        float density = ctx.getResources().getDisplayMetrics().density;
        int px = (int) (dp * density + 0.5f);// 4.9->5 4.4->4

        return px;
    }

    public static float px2dp(Context ctx, int px) {
        float density = ctx.getResources().getDisplayMetrics().density;
        float dp = px / (density + 0.5f);

        return dp;
    }
}
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                    DensityUtils.dp2px(this, 10), DensityUtils.dp2px(this, 10));
            if (i > 0) {
                params.leftMargin = DensityUtils.dp2px(this, 10);// 设置圆点间隔
            }
View Code

 

 

package com.demo.sb.main;

import com.demo.suibian.R;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.FailReason;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;

import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.Vie
首页 上一页 1 2 3 4 5 下一页 尾页 1/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇圆形ImageView(可设置边缘厚度和.. 下一篇仿微信底部TAG完美渐变

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目