Android滑动删除控件 效果展示 代码实现 静态布局 自定义一个ViewGroup,继承至FrameLayout,覆写其中的几个关键方法,用于给其中的两个子view设置布局位置。...deleteView.layout(contentViewWidth, 0, contentViewWidth + deleteViewWidth, deleteViewHeight); } 处理滑动逻辑...需要我们制定什么时候滑动,以及滑动多少。 需要把ViewGroup中受到的触摸事件传给ViewDragHelper实例。...super.onViewCaptured(capturedChild, activePointerId); } /** * 控制view在水平方向上实际滑动了多少...{ return super.getViewHorizontalDragRange(child); } /** * view滑动后的回调
之前UI交互类的东西接触的也比较少,于是把Android里面嵌套滑动相关的内容也过了一遍,在这里做一些分享。...在嵌套滑动控件的场景中,可以在Android的事件分发机制本身做一些处理,外部拦截或者内部消化触摸事件。...因为有了一次 pre-scroll 操作,我们才可以让子view在第一次执行嵌套滑动分发的时候,带上自己没有消费的距离,也就是 unconsumedY : 到这里 Android 的嵌套滑动机制就比较明了了...嵌套滚动方案的选择 有了这些接口之后,我们可以看到其实内置的Android 控件都支持了滑动嵌套,那么是否我们平时使用的方法都是正确的呢?...= STATE_DRAGGING 就成立了,这时候事件就被 CoordinatorLayout 拦截下来,内部的滑动控件就开始正常滑动。 总结 到这里,Android的嵌套滑动机制就介绍完了。
mport android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory;...import android.graphics.Canvas; import android.graphics.Rect; import android.os.Handler; import android.os.Message...; import android.os.Vibrator; import android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent...; import android.view.View; import android.widget.ImageView; import android.widget.RelativeLayout; import...滑动时 处于INVISIBLE(不可见)状态,滑动时处于VISIBLE(可见)状态 tv_slider_icon = (TextView) findViewById(R.id.slider_icon
今天和朋友聊到这个功能,刚开始的想法是自定义view,如何进行滑动监听,经过一列操作完成效果后,发现了一个贼简单的实现效果,如下(老规矩后面有可运行代码)。...效果图: 1.在布局中放入一个ScrollView,然后确保里面的内容能够达到滑动的效果 2.获取屏幕的高度 //获取屏幕高度 private float getScreenHeight
> android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com...android:id="@+id/recyclerview" android:layout_width="match_parent" android:layout_height...> android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com...android:id="@+id/recyclerview" android:layout_width="match_parent" android:layout_height...; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import java.util.ArrayList
Android View控件的滑动是 Android 的一个重要内容。...在 View 需要变换位置时,为其添加适当的滑动效果,获得更好的用户体验,下面来看一下怎样去实现 View 的滑动: 1、scrollBy / ScrollTo 方法: View 控件提供的两个方法...在上面的滑动中,效果是瞬间完成的,在 APP 中,这种效果会给人一种非常突兀的感觉。Scroller 类正是为了给 View 的滑动添加动画效果产生的。...View 的 computeScroll() 方法: 3、调用 startScroll(int startX, int startY, int dx, int dy)方法开始 View 的滑动,参数分别为开始的位置和横纵方向滑动的位移...成功的实现了滑动效果! 不知道小伙伴们发现没有,在这里实现的滑动都是对当前控件的全部的子 View 进行滑动,这样在一定程度上限制了滑动的灵活性。那么我们如何处理单个 View 的滑动呢?
首先自定义一个 继承自 ViewPager的自定义 类 package com.yourcompany; import android.content.Context; import android.support.v4....view.ViewPager; import android.util.AttributeSet; import android.view.MotionEvent; public class NonSwipeableViewPager...return false; } } 然后在布局文件中引入这个自定义ViewPager的XML标签 <com.yourcompany.NonSwipeableViewPager android...:id="@+id/view_pager" android:layout_width="match_parent" android:layout_height="0dp" android
外部拦截法 重写父View onInterceptTouchEvent方法就行: float latestX; float latestY; ...
> android="http://schemas.android.com/apk/res/android" android:layout_width="...fill_parent" android:layout_height="fill_parent" android:background="#FFFFFF" android:orientation...; import android.os.Bundle; import android.os.Handler; import android.os.Parcelable; import android.support.v4...; import android.widget.TextView; /** * 仿优酷Android客户端图片左右滑动 * * @author SinaWeiBo:f309587969@126...中的滑动组件 private List imageViews; // 滑动的图片集合 private String[] titles; // 图片标题 private
int offsetX = x - lastX; int offsetY = y - lastY; //1、滑动方法...() + offsetX, getTop() + offsetY, getRight() + offsetX, getBottom() + offsetY); //2、滑动方法...offsetLeftAndRight(offsetX); // offsetTopAndBottom(offsetY); //3、滑动方法
控件滑动固定 实现思路: 首先我们需要实时的获取滑动的Y值scrollDistanceY(可以理解为滑动了的距离),可以通过ScrollView的getScrollY();方法来获取。...需要特殊处理手指离开后屏幕还在滑动导致 scrollDistanceY改变的情况。 在xml布局中,绿色的固定布局View我们需要写两个,一个与头部布局重合,位于APP顶部,另一个与列表中。...* 这是一个能够实时向主View提供滑动距离Y值的ScrollView(滑动的高度) * 能够运用此ScrollView实现在内部View固定顶部布局的需求 */ public class FixedHeadScrollView...=scrollDistanceY){//如果不相等,说明手指离开后,屏幕仍然在滑动,继续更新scrollDistanceY的值 scrollDistanceY...记得处理手指离开屏幕后,界面仍然在滑动,导致外层固定布局的显示隐藏控制有误。
="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width...android:layout_centerVertical="true" android:layout_margin="10dp" android:src...android:id="@+id/title2" android:layout_width="match_parent" android:layout_height="45dp...:text="2" android:textColor="@android:color/black" android:textSize="...android:layout_marginLeft="5dp" android:text="2" android:textColor="@
1,xml中RecyclerView添加android:nestedScrollingEnabled="false"属性 android.support.v7.widget.RecyclerView...android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height...="wrap_content" android:nestedScrollingEnabled="false"/> 或 2,代码设置 mRecyclerView.setNestedScrollingEnabled
大家看上面的分类栏,我们这个分类数目不固定,要求可以一个一个横向滑动。不是viewPager分页 一屏幕放4个,一滑动一下子显示下一页的4个。当然这种效果一般都是用viewPager实现。...这个横向的列表之前的博客已经写过了用的HorizontalListView,所以这个横向滑动列表的实现 我就不再写一次了 ,感兴趣的可以直接看这篇文章 Android 横向ListView实现 但是用这个实现了列表后...private GestureDetector gd = new GestureDetector(this); private int FLING_MIN_DISTANCE = 200;// 水平方向手指滑动距离最小值...private int FLING_MIN_VELOCITY = 0;// 垂直方向手指滑动距离最小值 @Override public boolean onFling(MotionEvent...onTouch(View view, MotionEvent motionEvent) { return gd.onTouchEvent(motionEvent); } 判断滑动状态
前言 上一篇文章我们讲述了「Android View事件分发机制」。...如果你对View的事件分发还不熟悉,建议先去看一下 一文读懂Android View事件分发机制 它是我们今天滑动冲突解决的理论基础!...2 滑动冲突的常见场景与处理思路 当我们内外两层View都可以滑动时候,就会产生滑动冲突! 常见的滑动冲突场景: ?...同方向,横向滑动冲突 天猫的这个是同方向,横向滑动冲突的场景,内外两层都是可以横向滚动的。它的处理逻辑也很明显,根据用户滑动的位置来判断到底是那个View需要响应滑动。...虽然这并不是常规的滑动冲突(子View不是滑动的),但是造成的原因其实是一样的,没有做滑动判断导致父View不能正确响应滑动事件。
2. onValueChange 具体执行( int oldVal :之前详实的数值 , int newVal 改变或现时的数值)
MotionEvent e2, float velocityX, float velocityY) { if (e2.getX() - e1.getX() > 120) { // 从左向右滑动...viewFlipper.showPrevious(); return true; } else if (e2.getX() - e1.getX() 滑动...,图片是左进右出 if (e2.getX() - e1.getX() > 120) ,即up终点(e2)与down起点(e1)的滑动距离大于120,来检测从左向右滑动事件 push_left_in.xml...:duration="1500" android:fromAlpha="1.0" android:toAlpha="0.1" /> 2、 当手势从右向左滑动时...,图片是右进左出 if (e2.getX() - e1.getX() 滑动距离小于-120,来检测从右向左滑动事件 push_right_in.xml
这个置顶是滑动的置顶,不包括外层布局。 好了,效果图看到了,你有没有动力开始写代码呢?...NonNull Context context, @Nullable AttributeSet attrs) { super(context, attrs); } //设置滑动到多少出现...int t, int oldl, int oldt) { super.onScrollChanged(l, t, oldl, oldt); /** * 滑动距离超过...500px,出现置顶按钮,可以做为自定义属性 * 滑动距离如果用户设置了使用用户的 如果用户没有设置使用默认的 */ //当 当前的左上角距离顶点距离...} } } //置顶按钮的点击事件监听 @Override public void onClick(View view) { //滑动到
Gallery 是Android官方提供的一个View容器类,继承于AbsSpinner类,用于实现页面滑动效果。...主要是为了是循环接近无限往复循环,使position无限大,循环在实践应用上不容易结束(理论上会结束,即2^31-1约20亿次循环后) 修改2,通过取余,使图片能够重复利用并显示 修改3,由于起始位置如果是0,则向右滑动左侧将无法循环...数组的下边界),因此开始应设置起始位置为imgAdapter.imgs.length的整数倍 效果3 —— “点击”和“选中”事件 1、点击事件OnItemClickListener,是需要用手点击才触发,滑动时不触发...2、选中事件OnItemSelectedListener,是当图片滑到屏幕正中,则视为自动选中,在滑动的过程中会触发 适用场景: 1、点击事件OnItemClickListener,是在确定要选中该项时...可以用来制作gallery循环显示效果) gallery.setOnItemClickListener(clickListener); // 设置点击图片的监听事件(需要用手点击才触发,滑动时不触发
滑动冲突这件事我们日常开发中应该是经常见,在我刚学习Android的时候,viewPager 与 SlidingMenu 侧滑栏的冲突也是搞得我一头雾水,不知道该怎么去解决,所以经常会去采用问百度的做法...; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4...; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4....view.ViewPager; import android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent...更多Android开发知识请访问—— Android开发日常笔记,欢迎Star,你的小小点赞,是对我的莫大鼓励。 参阅:Android开发艺术探索