2017-08-12 Lauzy
最近想写个音乐播放器,偶然看到轻听这款播放器的播放和暂停按钮,在切换过程中的动画很是吸引我。本着造轮子(其实是 github 上边没找到)的想法,就花了点时间撸出来了这个效果。 效果就是下边这个样子: more 下边说下实现方法,中间也踩了一些坑。 测量及初始化 首先要确实View的宽高,在这里由于是圆形按钮,所以设置宽高相等,onMeasure()方法中设置下即可: ```java mWidth = MeasureSpec.getSize(widthMeasureSpec); mHeight = MeasureSpec.getSize(heightMeasureSpec); int widt 继续阅读 »
2015-09-17 ZhangTitanjum
上一篇介绍了150行代码实现滑动退出功能,相对来说比较简单,那么这篇文章稍微复杂点,有350行代码。 1. CircleImageView:继承系统的View,重写系统的方法; 2. 自定义style属性:供使用者在xml文件中配置,方便使用; 有多么好用就不罗嗦了(我左侧的头像就是),直接上代码: more ```java public class CircleImageView extends ImageView { private static final ScaleType SCALE_TYPE = ScaleType.CENTER_CROP; private static final Bitmap.Co 继续阅读 »
2015-09-09 ZhangTitanjum
超级简单代码实现滑动退出 本文参考自 http://www.jianshu.com/p/59be4551c418 OK,接下来惯例,通过阅读本文你能学习到: ViewDragHelper的使用(如果你想学习自定义View,那么ViewDragHelper你绝对不能错过) 好像也没有什么了.... 这个效果,难度不大,会ViewDragHelper的同学应该10分钟就能写出来了吧~ 如果不会也没关系~以下是代码,请查看。 more 自定义Layout : SwipeBackFrameLayout java public class SwipeBackFrameLayout extends FrameLayout { 继续阅读 »
2014-01-01 W.Y.
参考原文:https://github.com/angular-ui/ui-router/wiki ui-router 的工作原理非常类似于 Angular 的路由控制器,但它只关注状态。 在应用程序的整个用户界面和导航中,一个状态对应于一个页面位置 通过定义controller、template和view等属性,来定义指定位置的用户界面和界面行为 通过嵌套的方式来解决页面中的一些重复出现的部位 最简单的形式 模板可以通过下面这种最简单的方式来指定 html in index.html javascript // in app-states.js (or whatever you want to nam 继续阅读 »
2016-08-03 曹强
参考原文:https://github.com/angular-ui/ui-router/wiki ui-router 的工作原理非常类似于 Angular 的路由控制器,但它只关注状态。 在应用程序的整个用户界面和导航中,一个状态对应于一个页面位置 通过定义controller、template和view等属性,来定义指定位置的用户界面和界面行为 通过嵌套的方式来解决页面中的一些重复出现的部位 最简单的形式 模板可以通过下面这种最简单的方式来指定 html in index.html javascript // in app-states.js (or whatever you want to nam 继续阅读 »
2016-07-14 JustWe
动态ID? xml 我们最习惯的ID设置方式大概就是这样了,在xml中直接使用android:id为一个View添加ID。但是这并不能解决所有的问题,我们有很多的View都是动态创建,还有的是自定义控件生成的,例如我们要在代码里实现相对布局,那我们就必须拿到相对的基准View的ID,但是这样就没办法直接使用xml进行定义了。 不过我想大家都知道就想我们通常能够用view.getId()一样获取到View的ID,我们也能够用view.setId(int id)来为View设定ID。不过这就出现了一个很严重的问题ID是个int类型的数字,那我们什么都可以设置吗? ID的使用方式 继续阅读 »
2014-11-13 码农明明桑
动画在Material Design设计中给用户反馈放用户点击时,并且在程序用户界面中提供连贯的视觉。Material主题为按钮(Button)和activity的转换提供了一些默认的动画,在android5.0(api 21)和更高的版本,你可以自定义这些动画和创建一个新动画: Touch feedback(触摸反馈) Circular Reveal(循环揭露效果) Activity transitions(Activity转换效果) Curved motion(曲线运动) View state changes (视图状态改变) more 自定义触摸反馈 触摸反馈在Material Design中在触摸点提供了一个即时视觉确认 继续阅读 »
2017-03-03 Jamling
{% asset_img RefreshLayout.png %} [QuickAF]使用RefreshLayout控件进行下拉刷新和上拉加载,通过在布局中定义app:ptr_content和app:ptr_empty或api中设置内容layout和错误view。 RefreshLayout的特点如下: - 支持任意Layout的下拉刷新和上拉加载,默认支持VScrollView,RecyclerView, ListView, GridView上拉/下拉,还可以通过registerDetector来支持更多的Layout; - 支持自定义EmptyView,一个EmptyView包含loading, empty, error三个子 继续阅读 »
2016-09-06 JustWe
作者:刘丰恺 作者博客:若梦浮生 转载请注明文章来源 我们在开发自定义控件的时候经常会有这样的需求,一个控件既需要能够被拖拽,也需要能够被点击。其实这个需求有个矛盾之处,需要被拖拽就要复写onTouch(...)函数,但是这样点击事件就被覆盖了,正常的 onClick() / onLongClick()事件是不能被响应的了。 现在面对这种情况GestureDetector,ViewDragHelper能为我们的开发提供一些便利,但是有的情况下这些封装的工具类没办法很好的满足我们的需求,这时候我们就需要自己来模拟View的点击事件。 模拟View点击事件说起来也很简单,说白了就是获 继续阅读 »
2015-05-10 码农明明桑
我们的项目包含图片编辑功能,特别是包含图片添加水印贴纸的功能,从最初的简单版可以添加一个图片并且移动位置,到现在添加的图片可以进行移动,以及缩放,旋转,已经是和其他的图片处理可以达到一样的很好的效果了。一直想要整理一下,分享一下实现的改进过程,一直没空,也由于我过于懒,没有动笔。今天正好有时间,分享一下。 more 原始阶段:直接添加ImageView,并且设置其在父view中的位置 父视图为RelativeLayout,贴纸view就是一个ImageView,通过设置topMargin和leftMargin来设置在父视图中显示的位置,不支持缩放和旋转。功能快速实现,代码比较冗余。再有了新的需求不方便扩展。 新阶段:自定义Vi 继续阅读 »