iphone上有开关控件,很漂亮,其实android4.0以后也有switch控件,但是只能用在4.0以后的系统中,这就失去了其使用价值,而且我觉得它的界面也不是很好看。...下载地址:http://home.ustc.edu.cn/~voa/res/HelloJni.apk 2.原理 继承自view类,override其onDraw函数,把两个背景图(一个灰的一个红的)和一个开关图...(圆开关)通过canvas画出来;同时override其onTouchEvent函数,实现滑动效果;最后开启一个线程做动画,实现缓慢滑动的效果。... android.view.ViewGroup.LayoutParams; /** * SlideSwitch 仿iphone滑动开关组件,仿百度魔图滑动开关组件 * 组件分为三种状态... * @param srcX 滑动起始点 * @param dstX 滑动终止点 * @param duration 是否采用动画,1采用
刚开始接触开关样式的按钮是在IOS系统上面,它的切换以及滑动十分帅气,深入人心。 所谓的开关按钮,就是只有2个状态:on和off,下图就是系统IOS 7上开关按钮效果。...所以,要想看如何实现滑动切换的效果,必须了解这些控件的实现方式。下面,让我们查看下android开发文档,看看这些是如何实现使用的。...二.重写CompoundButton控件实现带滑动效果的开关按钮: 重写CompuundButton的实现可能会显得相对繁琐些,主要是考虑状态是否已经选中等情况的文字显示。 ...三.重写CheckBox控件实现带滑动效果的开关按钮: 其实,看上面给的开发文档内容,大家都可以知道,CheckBox其实就是继承CompoundButton控件的,只是重构CheckBox...四.重写View实现带滑动效果的开关按钮: 众所周知,以上所有的控件都是继承了View这个父类,所以,如果你用View去操作的话,就没有自带方法的限制,可是要满足你要 实现的SwitchButton
> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/root..." android:layout_width="match_parent" android:layout_height="match_parent" android:orientation...="wrap_content" android:layout_height="wrap_content" android:textOff="横向排列" android...android:layout_width="wrap_content" android:layout_height="wrap_content" android:textOff...="横向排列" android:textOn="纵向排列" android:thumb="@drawable/thumb" android:checked
前言 H5站点需要IOS滑动按钮的效果,想了想似乎CSS3能搞起,就折腾出来了...挺简单的..请看注释 效果 代码 CSS3模拟IOS开关 /* ===========...=================================================================== 设置伪类,来实现模拟滑块滑动
前一段时间在做项目的时候遇到了一个问题,美工在设计的时候设计的是一个iPhone中的开关,但是都知道Android中的Switch开关和IOS中的不同,这样就需要通过动画来实现一个iPhone开关了。...float mRealPos; // 图片的绘制位置 private float mBtnPos; // 按钮的位置 private float mBtnOnPos; // 开关打开的位置...private float mBtnOffPos; // 开关关闭的位置 private float mMaskWidth; private float mMaskHeight...> android="http://schemas.android.com/apk/res/android" android:...android:dependency="checkbox" android:summaryOff="off" android:summaryOn="on" android:title
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 的滑动呢?
ToggleButton是一个用一条线显示状态的按钮 Switch是开关按钮,看起来Switch更为实用,两者用法几乎一样,参见上图。
首先自定义一个 继承自 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
Android打开关闭手机扬声器 1.添加权限 android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> 2...boolean isSpeakerOpen = true;//默认开启手机扬声器 private static int currVolume = 0;//当前音量 4.设置一个按钮的点击事件来打开关闭手机扬声器
外部拦截法 重写父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
="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="@
控件滑动固定 实现思路: 首先我们需要实时的获取滑动的Y值scrollDistanceY(可以理解为滑动了的距离),可以通过ScrollView的getScrollY();方法来获取。...需要特殊处理手指离开后屏幕还在滑动导致 scrollDistanceY改变的情况。 在xml布局中,绿色的固定布局View我们需要写两个,一个与头部布局重合,位于APP顶部,另一个与列表中。...* 这是一个能够实时向主View提供滑动距离Y值的ScrollView(滑动的高度) * 能够运用此ScrollView实现在内部View固定顶部布局的需求 */ public class FixedHeadScrollView...=scrollDistanceY){//如果不相等,说明手指离开后,屏幕仍然在滑动,继续更新scrollDistanceY的值 scrollDistanceY...记得处理手指离开屏幕后,界面仍然在滑动,导致外层固定布局的显示隐藏控制有误。
int offsetX = x - lastX; int offsetY = y - lastY; //1、滑动方法...() + offsetX, getTop() + offsetY, getRight() + offsetX, getBottom() + offsetY); //2、滑动方法...offsetLeftAndRight(offsetX); // offsetTopAndBottom(offsetY); //3、滑动方法
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