用Android studio 实现通讯录左右滑动翻页功能
时间: 2023-06-18 07:05:27 浏览: 139
android 左右滑动翻页
5星 · 资源好评率100%
实现通讯录左右滑动翻页功能需要使用ViewPager组件,它是Android中用来实现左右滑动翻页的重要组件,下面是实现该功能的步骤:
1. 在XML布局文件中添加ViewPager组件,例如:
```xml
<androidx.viewpager.widget.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
```
2. 在Activity中声明ViewPager,并将其与Adapter绑定,例如:
```java
ViewPager viewPager = findViewById(R.id.viewPager);
MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(adapter);
```
其中MyPagerAdapter是继承自FragmentPagerAdapter的自定义Adapter,需要在其中实现getItem()和getCount()方法,用来返回ViewPager所需的Fragment和Fragment数量。
3. 在Activity中添加ViewPager的滑动监听器,用来更新当前页面的位置,例如:
```java
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
// Do nothing
}
@Override
public void onPageSelected(int position) {
// Update current page position
currentPosition = position;
}
@Override
public void onPageScrollStateChanged(int state) {
// Do nothing
}
});
```
其中currentPosition是当前页面位置的变量,在onPageSelected()方法中更新。
4. 在Activity中设置手势监听器,用来实现左右滑动翻页功能,例如:
```java
viewPager.setOnTouchListener(new View.OnTouchListener() {
private float startX = 0;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
startX = event.getX();
break;
case MotionEvent.ACTION_UP:
float endX = event.getX();
float deltaX = endX - startX;
if (deltaX > 0) {
// Swipe right
if (currentPosition > 0) {
viewPager.setCurrentItem(currentPosition - 1, true);
}
} else {
// Swipe left
if (currentPosition < adapter.getCount() - 1) {
viewPager.setCurrentItem(currentPosition + 1, true);
}
}
break;
default:
break;
}
return false;
}
});
```
其中startX是手指按下时的X坐标,endX是手指抬起时的X坐标,deltaX是两者之差。根据deltaX的正负来判断是向左滑动还是向右滑动,通过setCurrentItem()方法来更新当前页面的位置。
以上就是实现通讯录左右滑动翻页功能的步骤,需要注意的是,在实现手势监听器时,需要返回false,以确保ViewPager能够正常滑动。
阅读全文