viewpager

解决DrawerLayout以及viewpager点击或者滑动后卡顿的问题

房东的猫 提交于 2019-12-02 13:52:59
编写这个模仿知乎日报的App时主界面采用了DrawerLayout使左侧包含一个抽屉菜单,在阅读日报的界面采用viewpager保证可以左右滑动,这里遇到了一个同样的问题,就是在DrawerLayout点击后就会开始加载网络数据,同样viewpager滑动后也会开始加载网络数据,而加载网络数据时会阻塞一下主线程,到时抽屉菜单或阅读界面还没有完全滑动完成时就会卡一下,用户体验很不好,在这里需要引入个接口,就是监听DrawerLayout和viewpager滑动的接口,代码如下,保证滑动完成后在开始加载数据,就可以解决卡顿问题。主要参数凑巧都是用arg1表示的,这是一个0—1的小数,滑动过程就是从0到1的过程,所以当arg1完全变为0或者1时表示界面滑动完全了,这时再开始加载数据就可以了。 mDrawerLayout.setDrawerListener(new DrawerListener() { @Override public void onDrawerSlide(View arg0, float arg1) { if (arg1 == 0) { //添加逻辑 } } @Override public void onDrawerOpened(View arg0) { } @Override public void onDrawerStateChanged(int arg0) { }

ViewPager与侧滑冲突

久未见 提交于 2019-12-02 12:56:20
在SlidingMenu(1)中,我们发现了ViewPager与侧滑效果冲突,所有我们要关掉ViewPager的滑动的功能,这就需要我们自定义一个ViewPager。 ViewPager继承的是ViewGroup,所有根据源码我们得知,它的时间传递有三个方法,分别是分发,拦截,和处理。我们只要在处理事件(OnTouchEvent)操作就可以了。 下面是代码: <span style="font-size:18px;">package com.example.jiemianjiagou.view; import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; public class MYviewpager extends LazyViewPager { public MYviewpager(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } public MYviewpager(Context context) { super(context); } @Override public

SwipeBackLayout的用法屏幕移动退出

时光总嘲笑我的痴心妄想 提交于 2019-12-02 12:54:23
SwipeBackLayou的简单使用 下载arr包 https://download.csdn.net/download/qq_35427437/10414355 如果想要可以评论或关注 这是5.0以后的新特性(此功能好像在低版本有问题,5.0以上没有黑屏) 使用步骤如下: 1、导入SwipeBackActivity库 2、让当前activity继承于SwipeBackActivity 3、//测拉关闭的控件 private SwipeBackLayout mSwipeBackLayout; mSwipeBackLayout = getSwipeBackLayout(); 4、//设置activity的关闭模式 int edgeFlag = SwipeBackLayout.EDGE_RIGHT; int edgeFlag = SwipeBackLayout.EDGE_BOTTOM; int edgeFlag = SwipeBackLayout.EDGE_ALL; int edgeFlag = SwipeBackLayout.EDGE_LEFT; 滑动关闭当前页面的方向有四种形式 * 1.SwipeBackLayout.EDGE_RIGHT 右边关闭页面 * 2.SwipeBackLayout.EDGE_LEFT 左边关闭页面 * 3.SwipeBackLayout.EDGE

[重写系统控件]ViewPager与SwipeBackLayout的业务需求解决

邮差的信 提交于 2019-12-02 12:51:13
笔者在登陆页面使用了ViewPager与SwipeBackLayout,但有一个业务需求是: ViewPager在第二页是可以右滑到第一页,当ViewPager在第一页时,才会触发SwipeBackLayout的右滑返回,ViewPager在第一页可以左滑到ViewPager的第二页。 参考了ViewPager的源码,做出以下解决办法: 继承ViewPager类,重写dispatchTouchEvent方法。二话不说,上代码: package com.dalinbobo.lapa.palette.customviewpager; import android.content.Context; import android.support.v4.view.ViewConfigurationCompat; import android.support.v4.view.ViewPager; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.ViewConfiguration; /** * 用于解决滑动冲突的登陆用的viewpager * Created by qin on 2016/3/23. */ public class LoginViewPager

Android侧滑返回的实现

不羁岁月 提交于 2019-12-02 12:42:02
IOS有侧滑回退的功能,可以侧滑回退到上一个Activity,并且在侧滑时,底层的actvity是透明显示的。下面代码将实现该功能。 主要实现思路是让Activity的整个容器滑动。 package com.tjpld.tonglingsafetyandroid.customview; import java.util.LinkedList; import java.util.List; import android.app.Activity; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.support.v4.view.ViewPager; import android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.ViewConfiguration;

android中ViewPager详解--视图滑动、界面卡等效果 (三)

安稳与你 提交于 2019-12-02 08:16:38
GuideActivity.java引导界面: import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; import cn.eoe.leigo.splash.adapter.ViewPagerAdapter; /** * * */ public class GuideActivity extends Activity implements OnPageChangeListener { private ViewPager vp; private ViewPagerAdapter vpAdapter; private List<View> views; //

Android ViewPager使用详解

為{幸葍}努か 提交于 2019-12-02 08:16:25
这是谷歌官方给我们提供的一个兼容低版本安卓设备的软件包,里面包囊了只有在安卓3.0以上可以使用的api。而viewpager就是其中之一利用它,我们可以做很多事情,从最简单的导航,到页面菜单等等。那如何使用它呢,与LisstView类似,我们也需要一个适配器,他就是PagerAdapter。看一下api的图片, ViewPager的功能就是可以使视图滑动,就像Lanucher左右滑动那样。分三个步骤来使用它: 1.在住布局文件里加入 <android.support.v4.view.ViewPager 这个组件,注意这个组件是用来显示左右滑动的界面的,如果不加载xml布局文件,他是不会显示内容的。 android:id="@+id/viewpager" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" > 2.加载要显示的页卡, LayoutInflater lf = getLayoutInflater().from(this); view1 = lf.inflate(R.layout.layout1, null); view2 = lf.inflate(R.layout.layout2, null); view3 = lf

Android项目开发之--------地铁时光机(一,搭建主框架)

删除回忆录丶 提交于 2019-12-02 08:10:22
Android项目开发之--------地铁时光机(一,搭建主框架) 一:先看一下框架搭建后的效果图 , 二:框架结构   (1)底部导航栏采用的是: MainActivity(主框架), MsgFragment(首页), HistoryFragment(历史清单含顶部导航栏), MineFragment(我的)。   (2)自定义标题栏(自定义toolbar) 三:底部导航栏的实现 主要代码: MainActivity: 复制代码 1 //定义底部文字 2 private final int[] TAB_TITLES = new int[]{ 3 R.string.menu_msg, R.string.menu_history, R.string.menu_mine 4 }; 5 //定义底部图标 6 private final int[] TAB_IMGS = new int[]{ 7 R.drawable.tab_main_msg, R.drawable.tab_main_history, R.drawable.tab_main_mine 8 }; 9 //黄油刀 找到控件 10 @BindView(R.id.view_pager) 11 ViewPager viewPager; 12 @BindView(R.id.tab_layout) 13 TabLayout

分析ScrollView嵌套RecyclerView、ViewPager引发的滑动问题

耗尽温柔 提交于 2019-12-02 08:09:19
有些需求要在一个页面里面加好多东西,于是会出现嵌套RecyclerView,ViewPager的情况。 但是在嵌套之后,即使使用NestedScrollView也会出现一些问题,比如嵌套RecyclerView会出现滑动卡顿,嵌套ViewPager会出现在ViewPager区域无法上下滑动的问题。 1.先来说一下嵌套ViewPager无法上下滑动的问题 我的思路是可以在dispatchTouchEvent方法里面,在ACTION_DOWN的时候,记录下y坐标;然后在ACTION_MOVE的时候,通过y坐标的差值,来决定是自己处理,还是交给父控件 public boolean dispatchTouchEvent(MotionEvent ev) { switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: downY = ev.getY(); break; case MotionEvent.ACTION_MOVE: if (Math.abs(ev.getY() - downY) > 50) { getParent().requestDisallowInterceptTouchEvent(false); return false; } break; } 这样通过事件分发,把事件拦截交给父控件,可以解决无法上下滑动的问题。 2

Android SDK 22.0.1 引用 android-support-v4 的问题

不羁的心 提交于 2019-12-02 00:13:37
[概述] Android SDK 更新到 Version-22.0.1 之后, 发现以前由低版本创建并调用了 android-support-v4.jar 的工程重新编译运行都会直接崩溃. 若引用 android-support-v13 估计也是如此. android-support-v4 常见的Widget包括 ViewPager 等. 整理问题和解决办法如下. [解决办法] 1. 打开工程, 右键属性 2. 找到 [Java Build Path] -> [Order or Export] 3. 勾选依赖的外部JARs, 如下图: [分析] 我们可以直接查看.classpath文件, 对比分别使用新旧版本SDK创建的工程属性, 如下(第一个为旧版本, 第二个为新版本): <?xml version="1.0" encoding="UTF-8"?> <classpath> <classpathentry kind="src" path="src"/> <classpathentry kind="src" path="gen"/> <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/> <classpathentry kind="con" path="com.android