android点击跳到左右滑动 页面时 可以随意指定先显示第几个页面吗
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android点击跳到左右滑动 页面时 可以随意指定先显示第几个页面吗相关的知识,希望对你有一定的参考价值。
可以的,左右滑动的控件就是viewPager,viewPager可以设置当前界面的。
具体设置代码:
viewPager.setCurrentItem(2); 表示转跳第三页,注意viewPager是从0开始的。
viewPager.setOffscreenPageLimit(4); 表示四个界面来回切换不会重新创建。
viewPager.getCurrentItem();表示获取当前是第几页。
import com.easyway.buttonpageflipper.R;
import android.app.Activity;
import android.graphics.PixelFormat;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.view.WindowManager.LayoutParams;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.ViewFlipper;
/**
* Android实现带渐显按钮的左右滑动效果 自然状态下按钮不可见,触摸屏幕时显示按钮
*
* @author longgangbai
*
*/
public class ButtonpageflipperActivity extends Activity implements OnGestureListener
// 声明两个按钮,分别代表向左和向右滑动
private ImageView btnLeft = null;
private ImageView btnRight = null;
// 设置WindowManager
private WindowManager wm = null;
private WindowManager.LayoutParams wmParams = null;
// ImageView的alpha值
private int mAlpha = 0;
private boolean isHide;
private ViewFlipper viewFlipper = null;
private GestureDetector detector;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setTitle("Android实现渐显按钮的左右滑动效果");
viewFlipper = (ViewFlipper) this.findViewById(R.id.myViewFlipper);
detector = new GestureDetector(this);
// 初始化左右按钮
initImageButtonView();
viewFlipper.addView(addImageView(R.drawable.photo1));
viewFlipper.addView(addImageView(R.drawable.photo2));
viewFlipper.addView(addImageView(R.drawable.photo3));
viewFlipper.addView(addImageView(R.drawable.photo4));
viewFlipper.addView(addImageView(R.drawable.photo5));
private View addImageView(int id)
ImageView iv = new ImageView(this);
iv.setImageResource(id);
return iv;
/**
* 初始化悬浮按钮
*/
private void initImageButtonView()
// 获取WindowManager
wm = (WindowManager) getApplicationContext().getSystemService("window");
// 设置LayoutParams相关参数
wmParams = new WindowManager.LayoutParams();
// 设置window type
wmParams.type = LayoutParams.TYPE_PHONE;
// 设置图片格式,效果为背景透明
wmParams.format = PixelFormat.RGBA_8888;
// 设置Window flag参数
wmParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL
| LayoutParams.FLAG_NOT_FOCUSABLE;
// 设置x、y初始值
wmParams.x = 0;
wmParams.y = 0;
// 设置窗口长宽数据
wmParams.width = 50;
wmParams.height = 50;
// 创建左右按钮
createLeftButtonView();
createRightButtonView();
/**
* 设置左边按钮
*/
private void createLeftButtonView()
btnLeft = new ImageView(this);
btnLeft.setImageResource(R.drawable.left);
btnLeft.setAlpha(0);
btnLeft.setOnClickListener(new View.OnClickListener()
public void onClick(View arg0)
// 上一个图像
viewFlipper.setInAnimation(ButtonpageflipperActivity.this,
R.anim.push_left_in);
viewFlipper.setOutAnimation(ButtonpageflipperActivity.this,
R.anim.push_left_out);
viewFlipper.showPrevious();
);
// 调整窗口
wmParams.gravity = Gravity.LEFT | Gravity.CENTER_VERTICAL;
// 显示图像
wm.addView(btnLeft, wmParams);
/**
* 设置右边按钮
*/
private void createRightButtonView()
btnRight = new ImageView(this);
btnRight.setImageResource(R.drawable.right);
btnRight.setAlpha(0);
btnRight.setOnClickListener(new View.OnClickListener()
public void onClick(View arg0)
// 下一个图像
viewFlipper.setInAnimation(ButtonpageflipperActivity.this,
R.anim.push_right_in);
viewFlipper.setOutAnimation(ButtonpageflipperActivity.this,
R.anim.push_right_out);
viewFlipper.showNext();
);
// 调整窗口
wmParams.gravity = Gravity.RIGHT | Gravity.CENTER_VERTICAL;
// 显示图像
wm.addView(btnRight, wmParams);
/**
* 设置按钮渐显效果
*/
private Handler mHandler = new Handler()
public void handleMessage(Message msg)
if (msg.what == 1 && mAlpha < 255)
// 通过设置不透明度设置按钮的渐显效果
mAlpha += 50;
if (mAlpha > 255)
mAlpha = 255;
btnLeft.setAlpha(mAlpha);
btnLeft.invalidate();
btnRight.setAlpha(mAlpha);
btnRight.invalidate();
if (!isHide && mAlpha < 255)
mHandler.sendEmptyMessageDelayed(1, 100);
else if (msg.what == 0 && mAlpha > 0)
mAlpha -= 10;
if (mAlpha < 0)
mAlpha = 0;
btnLeft.setAlpha(mAlpha);
btnLeft.invalidate();
btnRight.setAlpha(mAlpha);
btnRight.invalidate();
if (isHide && mAlpha > 0)
mHandler.sendEmptyMessageDelayed(0, 800);
;
private void showImageButtonView()
isHide = false;
mHandler.sendEmptyMessage(1);
private void hideImageButtonView()
new Thread()
public void run()
try
Thread.sleep(1500);
isHide = true;
mHandler.sendEmptyMessage(0);
catch (Exception e)
;
.start();
@Override
public boolean onTouchEvent(MotionEvent event)
this.detector.onTouchEvent(event);
switch (event.getAction())
case MotionEvent.ACTION_MOVE:
case MotionEvent.ACTION_DOWN:
showImageButtonView();
break;
case MotionEvent.ACTION_UP:
hideImageButtonView();
break;
return true;
@Override
public void onDestroy()
super.onDestroy();
// 在程序退出(Activity销毁)时销毁窗口
wm.removeView(btnLeft);
wm.removeView(btnRight);
@Override
public boolean onDown(MotionEvent e)
// TODO Auto-generated method stub
return false;
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY)
if (e1.getX() - e2.getX() > 120)
this.viewFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_in));
this.viewFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_out));
this.viewFlipper.showNext();
return true;
else if (e1.getX() - e2.getX() < -120)
this.viewFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_in));
this.viewFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_out));
this.viewFlipper.showPrevious();
return true;
return false;
@Override
public void onLongPress(MotionEvent e)
// TODO Auto-generated method stub
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY)
// TODO Auto-generated method stub
return false;
@Override
public void onShowPress(MotionEvent e)
// TODO Auto-generated method stub
@Override
public boolean onSingleTapUp(MotionEvent e)
// TODO Auto-generated method stub
return false;
本回答被提问者和网友采纳
微信小程序——左右滑动切换页面
参考技术A 微信小程序的左右滑动触屏事件,主要有三个事件:touchstart,touchmove,touchend。这三个事件最重要的属性是pageX和pageY,表示X,Y坐标。
touchstart在触摸开始时触发事件;
touchend在触摸结束时触发事件;
touchmove触摸的过程中不断激发这个事件;
这三个事件都有一个timeStamp的属性,查看timeStamp属性,可以看到顺序是touchstart => touchmove=> touchmove => ··· =>touchmove =>touchend。
以上是关于android点击跳到左右滑动 页面时 可以随意指定先显示第几个页面吗的主要内容,如果未能解决你的问题,请参考以下文章