android viewpager 滑动方法,Android实现实时滑动ViewPager的2种方式

package com.example.welcome;

import java.util.ArrayList;

import android.app.Activity;

import android.os.Bundle;

import android.support.v4.view.PagerAdapter;

import android.support.v4.view.ViewPager;

import android.support.v4.view.ViewPager.OnPageChangeListener;

import android.view.View;

import android.view.ViewGroup;

import android.view.animation.TranslateAnimation;

import android.widget.ImageView;

public class MainActivity extends Activity {

private ViewPager mViewPager;

MyAdapter mAdapter;

private ArrayList imageViewList;

View red_point;

private int lastDis;

PagerCursor pagerCursor;

@SuppressWarnings("deprecation")

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

pagerCursor = (PagerCursor) findViewById(R.id.pagerCursor);

red_point = findViewById(R.id.red_point);

imageViewList = new ArrayList();

int[] imagesInt = {R.drawable.p1,R.drawable.p2,R.drawable.p3};

for (int i = 0; i < imagesInt.length; i++) {

ImageView imageView = new ImageView(MainActivity.this);

imageView.setBackgroundResource(imagesInt[i]);

imageViewList.add(imageView);

}

mViewPager = (ViewPager) findViewById(R.id.mViewPager);

mAdapter = new MyAdapter();

mViewPager.setAdapter(mAdapter);

mViewPager.setOnPageChangeListener(new OnPageChangeListener() {

private boolean isDragging;

@Override

public void onPageSelected(int arg0) {

}

@Override

public void onPageScrolled(int position,float screenOffSet,int arg2) {

TranslateAnimation animation = null;

if (isDragging) {

int dp2px = PhoneUtils.dp2px(MainActivity.this,20f);

int offSet = (int) (position*dp2px + dp2px*screenOffSet);

animation = new TranslateAnimation(lastDis,offSet,0f,0f);

animation.setDuration(200);

animation.setFillAfter(true);

red_point.startAnimation(animation);

lastDis = offSet;

}

float[] screenSize = MeasureUtil.getScreenSize(MainActivity.this);

float itemWidth = screenSize[0]/3;

pagerCursor.SetOffSet(position,screenOffSet,itemWidth);

}

@Override

public void onPageScrollStateChanged(int arg0) {

switch (arg0) {

case ViewPager.SCROLL_STATE_DRAGGING://滑动

isDragging = true;

break;

case ViewPager.SCROLL_STATE_IDLE://空闲

isDragging = false;

break;

default:

break;

}

}

});

}

class MyAdapter extends PagerAdapter{

@Override

public int getCount() {

return imageViewList.size();

}

@Override

public boolean isViewFromObject(View arg0,Object arg1) {

return arg0 == arg1;

}

@Override

public void destroyItem(ViewGroup container,int position,Object object) {

container.removeView(imageViewList.get(position));

}

@Override

public Object instantiateItem(ViewGroup container,int position) {

container.addView(imageViewList.get(position));

return imageViewList.get(position);

}

}

}

@H_403_12@

CustomeDotGroup

package com.example.welcome;

import android.content.Context;

import android.util.AttributeSet;

import android.view.View;

import android.widget.ImageView;

import android.widget.LinearLayout;

public class CustomeDotGroup extends LinearLayout {

private Context context;

public CustomeDotGroup(Context context,AttributeSet attrs,int defStyle) {

super(context,attrs,defStyle);

this.context = context;

initRes();

}

public CustomeDotGroup(Context context,AttributeSet attrs) {

this(context,0);

}

public CustomeDotGroup(Context context) {

this(context,null);

}

private void initRes() {

int dotWidthOrHeight = PhoneUtils.dp2px(context,10);

for (int i = 0; i < 3; i++) {

ImageView dotImageView = new ImageView(context);

dotImageView.setBackgroundResource(R.drawable.point_normal);

LayoutParams dotImageViewParams = new LayoutParams(dotWidthOrHeight,dotWidthOrHeight);

if (i != 0) {

dotImageViewParams.leftMargin = dotWidthOrHeight;

}

dotImageView.setLayoutParams(dotImageViewParams);

this.addView(dotImageView);

}

}

}

@H_403_12@

PagerCursor

package com.example.welcome;

import android.app.Activity;

import android.content.Context;

import android.graphics.Canvas;

import android.graphics.Paint;

import android.util.AttributeSet;

import android.util.Log;

import android.view.View;

public class PagerCursor extends View {

Context context;

private Paint mPaint;

private int screenWidth;

private int desRight;

private float itemWidth;

public PagerCursor(Context context,defStyle);

// TODO Auto-generated constructor stub

}

public PagerCursor(Context context,AttributeSet attrs) {

super(context,attrs);

this.context = context;

initRes();

// TODO Auto-generated constructor stub

}

public PagerCursor(Context context) {

super(context);

// TODO Auto-generated constructor stub

}

private void initRes() {

float[] screenSize = MeasureUtil.getScreenSize((Activity) context);

screenWidth = (int) screenSize[0];

Log.d("TAG",",screenWidth" + screenWidth);

mPaint = new Paint();

mPaint.setColor(getResources().getColor(R.color.contentPressColor));

mPaint.setStyle(Paint.Style.FILL);

mPaint.setAntiAlias(true);

}

public void SetOffSet(int position,float itemWidth) {

int offSet = (int) (position * itemWidth + itemWidth * screenOffSet);

this.itemWidth = itemWidth;

desRight = offSet;

Log.d("TAG","screenOffSet:" + screenOffSet + ",position" + position

+ ",desRigh-->t" + desRight + ",itemWidth" + itemWidth);

invalidate();

}

@Override

protected void onDraw(Canvas canvas) {

super.onDraw(canvas);

Log.d("TAG","onDraw,itemWidth" + itemWidth);

canvas.drawRect(desRight,desRight + itemWidth,PhoneUtils.dp2px(context,5),mPaint);

}

}

@H_403_12@

MeasureUtil

package com.example.welcome;

import android.app.Activity;

import android.util.DisplayMetrics;

/**

* 测绘工具�?

*/

public final class MeasureUtil {

/**

* 获取屏幕尺寸

*

* @param activity

* Activity

* @return 屏幕尺寸像素值,下标�?的�?为宽,下标为1的�?为高

*/

public static float[] getScreenSize(Activity activity) {

DisplayMetrics metrics = new DisplayMetrics();

activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);

return new float[] { metrics.widthPixels,metrics.heightPixels };

}

}

@H_403_12@

PhoneUtils

package com.example.welcome;

import android.content.Context;

public class PhoneUtils {

public static int dp2px(Context context,float dpValue){

float scale = context.getResources().getDisplayMetrics().density;

return (int)(dpValue * scale +0.5f);

}

}

@H_403_12@

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

小编个人微信号 jb51ccc

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

相关文章

猜你在找的Android相关文章

在ExpandableListView中添加button后item项不能点击,获取不到点击事件。

原因:button按钮抢占了ExpandableListView的焦点

1 AlertDialog.Builder builder=new AlertDialog.Builder(this); 2 builder.setTitle("历史记录").se

现在是2021-03-12 00::39 刚刚完成了一个小软件部分功能,现在把出现的问题总结如下: 一、首先要下载jar包 网址:https://mvnrepository.com/artifact/

2021-03-06 13:26:12.274 8544-8544/com.example.helloworld E/AndroidRuntime: FATAL EXCEPTION: main Pro

首先要使用ListView是要自定义一个适配器类的,先简单分析一下适配器怎么写: 示例程序是要使用ListView列表显示出水果的图片以及对应的水果文字描述(水果名字)。 public class F

问题① 我在另外一个项目里写了一个注册和登录功能的几个文件,当我想把这些代码和另一个文件合起来的时候就出现了问题。 首先不可以直接把另外一个项目的某个文件直接复制过来, 最好的办法是重新新建一个相同名

ListView是Android中最常用的控件之一,几乎所有的应用程序都会用到它,因此学会运用它很重要。下面我们从一个例子中去理解ListView的用法,先看一下我们这个例子的项目结构图 这里我们先看

1.垂直滚动:Scroll 新建一个应用程序: 在MainActivity的布局文件上做个实验,现在设置了按钮1和按钮2后还剩下一些空位: 再设置一个按钮3让他超出屏幕之外: 现在去运行程序,是滑动不

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值