- 博客(21)
- 资源 (11)
- 收藏
- 关注
原创 Android主线程耗时方法监控
前言相信各位大佬肯定在开发中遇到过这个问题:一顿操作猛如虎之后,总感觉程序有时候有点卡顿;或者自己自测得好好的,但是测试妹子的机器上却卡成狗。那么,能不能做到运行APP之后,能自动地列出哪些类的哪些方法在主线程比较耗时呢?并且对原工程代码低侵入性或者零侵入性呢?开源插件推荐答案当然是肯定的,为了方便大家使用,这里我先列出来自己刚写的一个开源项目,专门监听Android主线程耗时方法。传送门...
2020-03-30 10:25:43 2175 2
原创 Android中ViewPager支持一屏多个View、切换动画以及无限滚动
1. 首先看一下最终的效果图2. 需求拆解第一眼看见上面的效果,是不是有些朋友觉得这个效果很酷,有的高手会觉得这个效果很简单。笔者昨天刚拿到需求的时候,最开始也是觉得这个很简单,可是越分析越发现好像实现出来并不是那么容易。单个的效果可能很简单,但是这么多的效果叠在一起,可能就比较复杂了。我简单得将这个效果任务拆解一下:一屏要展示3个View,支持左右滑动屏幕中间两侧的View移向中间时,会有一个
2017-08-16 12:01:46 4882 3
原创 ListView添加Item动画以及四种冲突情况的解决办法
首先我们梳理一下需求1. 界面上有三个元素,一个开启动画按钮start,一个关闭动画按钮end,一个ListView展示数据2. ListView默认是GONE的3. 点击开启动画按钮前,需要先将ListView置为VISIBLE,然后再开启动画。开启之后默认展示第一项。4. 点击关闭动画按钮后,在动画执行结束后,将ListView置为GONE。5. 点击ListView的Item后,……
2017-07-10 16:48:36 1657
原创 ThreadLocal源码解析
1. 前言我们知道,ThreadLocal是一个线程内部的数据存储类,通过它可以在指定的线程中存储数据,数据存储以后,只有在指定线程中可以获取到存储的数据,对于其它线程来说无法获取到数据。这么神奇的东西有没有想知道是怎么实现的呢?
2017-06-15 15:24:45 344
原创 Handler、Looper与MessageQueue源码解析
1. 前言我们知道,Android中的主线程是默认开启了Looper的,子线程是没有开启了Looper的。这也就意味着子线程的run()方法执行结束后该线程就结束了。那么Looper到底是什么东西呢?为什么开启Looper线程就不会执行结束呢?2. 子线程开启Looper的示例代码要在子线程开启Looper,其实非常得简单,以下是标准的代码private void startWorkThread()
2017-06-14 17:42:13 319 1
原创 Android自定义ListView实现侧滑子菜单
惯例,先放效果图,DEMO在最后想当年博主刚接触Android的时候,看到这个效果心中只有膜拜啊,如果慢慢的自己水平也上来了,就把当年的一个想法给圆满了吧。好了,废话不多说,先总结总结这个效果:首先是需要自定义ListView,这点是必须的,然后在ListView的onTouchEvent方法中对事件进行处理普通的Item的话,是没办法实现这样侧滑的,即使你塞一
2016-07-01 11:41:17 7812 2
原创 ListView多屏数据时footer悬停底部
1. 效果图2. 需求当数据量比较少不足一屏的时候,footer跟随数据库当数据量多于一屏的时候,footer固定在底部3. 分析我们可以新建一个View作为footer,同时将这个View复制一份固定在底部,初始设置为invisible数据量小的时候,footer默认就是跟随着ListView的,将底部View设置为invisible。数据量多的时候,将底部的View设置为visible
2017-09-26 18:36:45 916
原创 Android 自定义Title根据滑动距离动画效果
1. 首先取得当前ScrollView的滑动距离2. 自定义TitleView,根据滚动距离展示不同的效果3. 标题栏分为3个部分:圆角背景、图标、文字4. 只有在最底部的时候,才显示图标,其他时候不显示图标5. 定义背景和文本的原始位置信息和目标位置信息,然后根据滚动距离动态计算实际的位置信息6. 在onDraw中根据实际位置信息,绘制背景和文字
2017-09-04 20:42:39 2604
原创 View的getLeft()、getTranslationX()和getX()的区别
View中的mTop、mTranslationY和y的区别
2017-05-24 15:30:54 1875
原创 Android 自定义ViewGroup实现整个Item布局竖直跑马灯效果
之前我也写过一篇关于Android竖直跑马灯效果的控件,不过这个控件是基于子Item是纯文本的情况,详情请移步:Android 自定义View实现竖直跑马灯效果,不过后面项目需求发生了变化,必须要整个Item包括图片啊文本啥的一起上下滚动,这个控件顿时就傻眼了,旧的设计架构是不行了,但是旧的思路依然可行。本文采取得思路和之前的是一样的,只是实现方式不同。放上效果图,DEMO在最下面
2016-08-03 11:13:15 2943 5
原创 Android自定义流式标签控件
最近总感觉写博客的激情不高,不知道为啥。放上效果图,demo在最下面图上那个切换按钮的作用呢,就是模拟改变标签的个数动态变化整个控件的高度。其实这个控件也算很简单的控件了。关键点只有两个如何控制标签自动换行切换数据源时动态改变控件的高度再简单的控件也需要一点一点的码出来,咱就从最基础的属性设置开始。 public FlowTagView textC
2016-07-21 14:16:44 2555 4
原创 Android 自定义View实现竖直跑马灯效果
首先给出效果图中间的色块是因为视频转成GIF造成的失真,自动忽略哈。大家知道,横向的跑马灯android自带的TextView就可以实现,详情请百度【Android跑马灯效果】。但是竖直的跑马灯效果原生Android是不支持的。网上也有很多网友实现了自定义的效果,但是我一贯是不喜欢看别人的代码,所以这篇博客的思路完全是我自己的想法哈。首先,我们需要给自定义的控件梳理一下
2016-07-14 11:04:18 5123 18
原创 Android自定义控件实现导航条IndicatorView
先上效果图这个控件其实算是比较轻量级的,相信不少小伙伴都能做出来。因为项目中遇到了一些特殊的定制要求,所以就自己写了一个,这里放出来。首先来分析下这个控件的功能:能够响应左右滑动,并且能响应快速滑动选择项和未选择项有不同的样式表现,比如前景色,背景色,字体大小变粗之内的在切换选项的时候,如果当前选项未完全呈现在界面前,则自动滚动直至当前选项完全暴露显示前两条
2016-06-30 00:03:48 2386 2
原创 Android嵌套滑动控件的冲突解决和ViewPager适配当前子控件高度不留空白的办法
最近项目有一个需求,需要多层可滑动控件的嵌套展示,demo效果如下:咋一看好像挺简单啊,不就是一个ScrollView + ViewPager + ListView吗,我开始也这样觉得,也用的这种方式实现,结果始终和效果不对劲。这里总结几点问题:两个或两个以上的滑动控件嵌套时,如果layout_height采用的是wrap_content会造成内部滑动控件的高度不能
2016-06-19 01:02:25 10354 9
原创 Android自定义LinearLayout实现左右侧滑菜单,完美兼容ListView、ScrollView、ViewPager等滑动控件
国际惯例,先来效果图在阅读本文章之前,请确定熟悉【Scroller】相关的知识,如果不熟悉,请小伙伴儿先百度后再来吧。假如你已经知道【Scroller】了,那么就接着往下看吧。首先,我们把侧拉菜单的构造给解析出来。多次观看上面的效果图,我们可以得出以下的结论。整体可以看做是一个ViewGroup,这个ViewGroup包含了最多三个子View(分别是左菜单的
2016-06-14 17:04:20 9175 9
原创 Android自定义ListView实现第一可见项和最后可见项的淡入淡出效果
先上效果图:(demo背景颜色太白了,所以效果不是很好)本来想实现这个效果的,但是在网上简单搜了一下,都没人讲解一下这个怎么实现,因此本人也花了一些功夫来搞。首先思考实现思路:1、得到第一项和最后一项的View2、算出此View的本身绘制的高度3、算出此View在屏幕可见的高度4、通过可见高度与本身高度的比值,设置View的alpha值。首先,第
2016-04-08 16:33:04 2848 2
原创 Android自定义实现循环滚轮控件WheelView
首先呈上效果图现在很多地方都用到了滚轮布局WheelView,比如在选择生日的时候,风格类似系统提供的DatePickerDialog,开源的控件也有很多,不过大部分都是根据当前项目的需求绘制的界面,因此我就自己写了一款比较符合自己项目的WheelView。首先这个控件有以下的需求:1、能够循环滚动,当向上或者向下滑动到临界值的时候,则循环开始滚动2、中间的一块有一
2016-04-05 11:42:30 10383 10
原创 Android自定义ListView实现下拉刷新,效果仿SwipeRefreshLayout
首先呈上效果图当今APP,哪个没有点滑动刷新功能,简直就太落伍了。正因为需求多,因此自然而然开源的也就多。但是若想引用开源库,则很麻烦,比如PullToRefreshView这个库,如果把开源代码都移植到项目中,这是件很繁琐的事,如果用依赖功能的话,对于强迫症的我,又很不爽。现在也有各种自定义ListView实现PullToRefreshListView的控件,无非就是在header加
2016-04-05 11:16:55 1729
原创 Android 自定义View实现动态炫酷按钮
普通按钮也就那么几种样式,看着都审美疲劳,先放效果图,演示Demo+源码在最后面你会不会以为这个按钮是集结了很多动画的产物,我告诉你,并没有。所有的实现都是基于自定义View,采用最底层的onDraw一点一点的画出来的。没有采用一丁点的动画。虽然演示时间很短,但是要完成这么多变化,还是挺吃力。首先讲解用法:public class MainActivity extend
2016-03-01 17:28:25 3800 7
原创 Android 自定义控件实现手势密码
国际惯例:放上效果图(求人气啊,每次文章都石沉大海) 首先呢想写这个手势密码的想法呢,完全是凭空而来的,然后笔者就花了一天时间弄出来了。本以为这个东西很简单,实际上手的时候发现,还有很多逻辑需要处理,稍不注意就容易乱套。写个UI效果图大约只花了3个小时,但是处理逻辑就处理了2个小时!废话不多说,下面开始讲解。 楼主呢,自己比较自定义控件,什么东西都掌握在自己的手里
2016-02-16 16:46:03 2706 6
原创 Android封装TextView内容伸缩工具
相信大家经常看见下面的实现效果:如果想要实现上面的效果,那么就要分下面几步:1、判断文字内容有没有超过指定行数的高度,如果超过了显示伸展箭头,如果没超过则隐藏箭头;2、对箭头进行监听,如果是伸展状态,则变为收缩状态;如果是收缩状态,则变为伸展状态;3、根据文本控件的状态动态改变箭头的图标;4、当文本内容发送改变时,依然能完美适配上述功能。虽然
2015-10-23 15:25:23 1201
Android自定义控件实现导航条IndicatorView
2016-06-29
Android三层滑动控件显示冲突和ViewPager高度动态调整的解决方案Demo
2016-06-19
Android自定义左右侧滑菜单Demo,完美兼容ListView、ViewPager、ScrollView等滑动控件
2016-06-14
Android 自定义View实现动态炫酷按钮
2016-03-01
Android 试衣间Demo
2016-02-25
Android封装TextView内容高度伸缩工具
2015-10-23
Android封装TextView内容伸缩工具
2015-10-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人