Android
文章平均质量分 67
海洋顶端
这个作者很懒,什么都没留下…
展开
-
移植 C/C++ 代码至 Android 平台经验总结
算法同学提供了一个图像分析能力,使用 C/C++ 实现,依赖了 Tensorflowlite、 OpenCV 等库。要在 Android 上使用这个能力,需要进行移植。移植可分为两步,第一步是面向 Android 设备的指令集构建 C/C++ 代码以及其依赖的库,第二步是编写一个 Wrapper 封装第一步生成的库并供 JNI 调用。针对第一步,我们首先要知道我们要部署的 Android 设备用...原创 2020-02-11 14:13:21 · 2190 阅读 · 0 评论 -
打印机效果的TextView——TyperTextView
前言:之前在一个国外大牛的博客上看到的,自己模仿实现了一下,应用在上一个项目的splash里面。原理:为每个字符设置样式,使用MutableForegroundColorSpan。MutableForegroundColorSpan是自定义的可设置透明度的ForegroundColorSpan。然后,利用FireworksSpanGroup类将这些MutableForegroundColorSpa原创 2015-07-14 17:30:15 · 969 阅读 · 0 评论 -
自己动手(一)──可拖动排序的 ListView(2)
接上篇博客,增加以下功能:在 dragging 的过程中,如果手指移动到ListView上边缘(下边缘),让ListView自动向下滑动(向上滑动)实时的 reorder Item view让 dragging item view有一定的透明度效果图图片显示有问题请点击这里自动滑动 private void scrollLi原创 2015-02-02 19:34:00 · 829 阅读 · 0 评论 -
Windows风格的Loading动画Android实现(2)
前言众所周知,为了不ANR,不可以在UI线程上执行耗时的操作。所以为了效率,也为了通用,我把计算绘制参数的操作放到工作线程中去了。参考了这篇文章。首先创建一个工作线程(workerThread),一个与workerThread关联的Handler(workerHandler),还有一个和UI线程关联的Handler(uiHandler)。在onDraw()执行结束之后,会通过workerHander原创 2015-07-26 21:28:11 · 557 阅读 · 0 评论 -
自己动手(二)──PullToRefresh之上拉翻页(3)
前言其实,上拉作为一个手势可以和很多动作关联,不仅仅局限于翻页。我的实现里面很多东西写的比较死,比如其实bottom view其实可以由使用者创建,bottom view在上拉过程中状态的改变也可以定制,通过addView加入到PullToRefresh容器中,这样可以提供更多灵活性。即,可以定义一个AbsBottomView的虚基类,它会有一些诸如onFinish,onRelease, onPu原创 2015-07-26 15:47:17 · 624 阅读 · 0 评论 -
自己动手(一)──可拖动排序的 ListView(1)
前言相关的开源库有很多,也非常完善。然而,正因为非常完善,代码量很大。想要学习的时候,感觉无从下手,也意味着无法自己扩展。所以,我有个计划,把这些轮子自己再造一遍,明白其中的原理,在需要的时候,能够自己扩展。于此同时,如果你想要一个简单初级、容易理解的版本,也许这篇文章会有帮助。参考http://blog.csdn.net/jj120522/article/details/原创 2015-01-29 21:05:50 · 1991 阅读 · 0 评论 -
自己动手(二)──PullToRefresh之上拉翻页(1)
前言打算做个阅读类的 App,想要模仿豆瓣一刻的上拉翻页效果。做了一些 search,发现跟 ListView 的 PullToRefresh 实现是类似的。而后者已经用过很多次了,还是不会改造。所以,尽管实现的不够完善,还是要自己动手,否则永远不明白其中的原理。从最简单的做起,先完成上拉翻页的效果。自己动手系列的custom view 都不是拿来用的,因为很多情况没有考虑,只把最基本的功能实现了,原创 2015-03-19 11:21:54 · 1314 阅读 · 0 评论 -
自己动手(一)──可拖动排序的 ListView(3)
前言到目前为止,大体功能已经实现。但是性能严重低下,看log,发现不停在进行垃圾回收。没有使用viewholder模式,每日调整次序都会刷新都是原因。尝试了一下优化,失败了,下次再试。改进:在拖动过程中item view的移动增加动画增加ListView已经滑动到顶部或者底部的判断,无法滑动的时候不再滑动,防止抖动给变量、函数改名原创 2015-07-26 10:40:23 · 699 阅读 · 0 评论 -
自己动手(二)──PullToRefresh之上拉翻页(2)
解决先上拉再下拉时的问题加入箭头动画原理解决先上拉再下拉时的问题关键在于如何在 custom view 的滑动和 scroll view 的滑动之间切换。从上向下滑动的时候,应该可以从 custom view 的滑动无缝过渡到 scroll view 的滑动。如最后一张图所示。这点豆瓣一刻没有做到。我通过插入一个 touch down event实现。体验更佳。箭头动画相对简原创 2015-03-20 11:23:01 · 574 阅读 · 0 评论 -
Android孔式打开的Splash效果
前言用Digest的时候发现它的打开效果很赞。类似的还有格瓦拉电影。想要自己实现一下。没有找到参考。自己现实的性能很差,内存、CPU消耗的都很多。如果有更好实现思路,请赐教。原理关键在于创建镂空的Bitmap。创建镂空的Bitmap的关键在于设置Xfermode,处理好src和dst的关系。之后便是不断的更新Bitmap,不断的重绘。原创 2015-07-13 10:46:37 · 647 阅读 · 0 评论 -
可滑动关闭的对话框(二)
继续完善,希望这个控件可以变成轮子被更多的人使用。改进改变使用方式,现在可以直接继承SwipeDialog使用,更加方便。并且和系统Dialog特性保持一致,比如设置Dialog的显示、取消、关闭监听器,设置可取消、可点击窗口以外区域取消等等。增强适用性,SwipeDialog的布局支持ListView、ScrollView等原创 2015-08-29 11:18:01 · 1045 阅读 · 0 评论 -
YUV 400 格式图像转换成 ARGB 格式图像中犯的一个低级 Bug
一、背景 最近在做 Android 巴枪项目,借助巴枪上面的二维扫描头拍照,然后去做 OCR。这属于定制需求,只能去和各个巴枪厂家去对接。后来厂家陆续暴露给了我们这个能力,但是接口都不一样(领教了 Android 的碎片化)。这个 Bug 就出在我适配一款巴枪的过程中。二、Bug 这个厂家的 SDK 设计是通过回调的方式把图片数据返回给我。只有一个 byte 数组,不知道宽、高,...原创 2019-01-18 18:01:30 · 1784 阅读 · 0 评论 -
双层布局 DoubleLayerLayout (续)
前言最近看博客,发现自己的实现复杂了,所以优化了一下。之前之所以不断的layout,是因为scroll没起效果。最近才明白,scroll一个视图的时候,内容是移动的,而background是不移动的。所以在这里,fgView的background应该是null。此外,学习使用Scroller类。Scroller类的构造器可以传入一个补差器,让滑动效果更佳。调用startScroll函数之后,需要原创 2015-06-23 20:29:46 · 785 阅读 · 0 评论 -
ShowCase──操作引导的简单实现
前言实现上还不完善,主要是思路的展示,为了抛砖引玉。效果图原理自定义 Dialog 展示引导视图。设置 Dialog 的 BackgroundDrawable 为一个有一块透明的 Bitmap。这个 Bitmap 借由 Canvas 创建。中间透明则用到 Paint 的 XferMode。paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode原创 2015-06-06 21:12:05 · 616 阅读 · 0 评论 -
自定义ViewPager实现轮播效果
前言这种轮播效果多应用于展示电影海报,但是效果并不好,有些没有手势动画,更加没有fling效果。我将ViewPager的源码拷贝出来,做了修改,实现了这两个效果。一屏显示三个page,让中间一个page居中突出显示 首先我们可以设置一个page宽为ViewPager宽的一定比例,比如 0.7。然后,ViewPager在两个page之间切换是通过设置scrollX实现的原创 2015-08-29 12:08:19 · 1042 阅读 · 0 评论 -
可滑动关闭的对话框(一)
前言Uber大家都用过,有时候它的对话框是从顶部落下来,你可以把它推上去关闭,或者把它拽下去关闭。我觉得这种交互方式很好。符合认知,也更加便捷。用在一些非关键信息的展示很合适,比如广告。效果图原理并没有去继承Dialog,而是直接将dialog视图通过WindowManager.addView方法添加到窗口中。当然,我在dialog视图外层包了一层FrameLayout用来获取并处理触摸事件,并实现原创 2015-08-02 16:41:31 · 1863 阅读 · 0 评论 -
Windows风格的Loading动画Android实现(3)
前言最近在学习开源弹幕引擎源码,其中对重绘的控制的很好,值得学习,我把一部分技术应用到我的这个动画里面。第一,在这个弹幕引擎里面,各个弹幕相互独立,独立计算独立绘制。第二,不过度绘制,这种情况是丢帧的反面。简单来说就是不要在16ms内绘制两次,因为当fps大于60之后,人眼就看不出差别来了。效果图改进面向对象,让每个点自己计算显示位置,自己绘制 每个点的运动轨迹是一样的,只是启动时间,启动位置不原创 2015-08-29 17:02:20 · 672 阅读 · 0 评论 -
个人主页常见的头像与背景图不同步移动的下拉效果实现
我自己想出来的实现方式,而且我觉得这样实现效率最高。假设背景图比用户信息视图高x,那么将背景的顶部x/2和底部x/2隐藏起来,如图所示 下拉的时候,让背景的移动速度是内容移动速度的1/2下拉到一定程度,背景完全显示之后,让背景和内容的移动速度保持一致如何隐藏背景图的顶部和底部? 通过设置背景的marginTop为-x/2隐藏顶部,而个人资料视图下面的视图会把背景图底部x/2挡住原创 2015-08-02 15:16:14 · 1889 阅读 · 0 评论 -
Windows风格的Loading动画Android实现(1)
效果前言还不够完善,只做学习之用。原理不停的重绘,即不停的改变点的位置以及透明度,不停的invaldate。所以,关键就在于根据动画执行时间确定点的位置以及透明度。首先定义,一个点飞入飞出所用时间为duration,点的数量为pointNum,那么可知pointNum*duration*2为一个周期。我们把动画执行时间对周期取余,自然就可得到循环重复效果。在一个周期里面划分为pointNum*原创 2015-07-13 10:00:06 · 726 阅读 · 0 评论 -
可滚动显示图片的 ImageView —— PanningImageView
前言参考这篇博文,在此基础上,做了些改进。比如,用 ValueAnimator 代替 ObjectAnimator, 代码更加简洁(在这种情况下,ValueAnimator 比 ObjectAnimator 更加方便,自定义控件自定义属性了)。此外,设置 Animator 的 RepeatMode 为 Reverse,不用如同博客里面的样子切换方向。最后,对各种尺寸的图片的支持。当不 panning原创 2015-06-22 11:33:51 · 869 阅读 · 0 评论 -
Material Design Style Widget(二)──MaterialRadioButton(续)
前言最近和同学聊天、看别人的博客,发现自己实现的方式太繁琐了,有很大的优化空间。在这里,利用自定义 Interpolator、属性动画的两个类 ValueAnimator 和 ObjectAnimator对我之前的实现进行优化。优化1.利用自定义interpolator,来实现一个Animation 的逆向 Animation。即可以少自定义一个 Animation 类。 final stat原创 2015-04-12 10:30:57 · 1403 阅读 · 0 评论 -
Material Design Style Widget(三)──MaterialProgress
前言各式各样的progress、loading效果已经很多。不过,总要推陈出新,让用户眼前一亮,让等待显得不那么漫长。这篇文章介绍的效果灵感来自 Safari 插件——“妈妈再也不用担心我的 macbook 发热计划”。效果图原理这个效果并不复杂——外侧较窄的弧(outerArc)逆时针转动、内侧 较宽的弧(innerArc)逆时针转动。不断转动,不断产生交叉、分离的效果。outerArc、inne原创 2015-03-14 20:22:08 · 493 阅读 · 0 评论 -
通用适配器(一)── 适用于 ListView、GridView 的 CommonBaseAdapte(ViewHolder 模式)
一、前言项目中经常用到ListView、GridView。因此写了很多 Adapter。发现其中的代码非常类似。仅有的区别在于 viewHolder 的创建、将数据绑定到 viewHolder。所以就想能不能偷个懒。二、思路1、把不变的代码放到一个类里面,起名 CommonBaseAdapter。(它的构造器以自定义的 CommonViewHolder 的类(.class)为参数。原创 2015-01-20 11:02:01 · 738 阅读 · 0 评论 -
通用适配器(二)── 适用于 ViewPager 的 CommonFragmentAdapter
一、前言经常需要自定义FragmentPagerAdapter,发现代码大同小异,只是实例化了不同的 fragment。所以写了这样一个类,以 fragment 的类(.class)为参数,用反射去实例化 fragment。这样一来,不需要每次都自定义一个 FragmentPagerAdapter,只需一条语句。二、源码public class CommonFragmentAdap原创 2015-01-20 11:37:30 · 727 阅读 · 0 评论 -
Android系统中TouchEvent的传递流程以及相关函数返回值True和False对流程的影响
3个关键函数booleandispatchTouchEvent(MotionEvent ev)booleanonInterceptTouchEvent(MotionEvent ev)booleanonTouchEvent(MotionEvent event)原创 2014-12-28 10:52:50 · 976 阅读 · 0 评论 -
自定义ScrollView实现弹性效果
弹性效果包括过度拉伸效果和反弹效果。 实现思路请看这篇文章,我基于他的实现进行了一些优化。 一、实现思路 这个问题的本质是控制ScrollView装载的View(不妨叫它innerView)的显示位置。而innerView显示位置的改变可以通过两种方式实现。 改变ScrollView的mScrollY调用innerView的layout(l, t, r, b原创 2014-12-26 20:23:40 · 1371 阅读 · 0 评论 -
它山之石
原文链接,请看原文。Android开源库自己一直很喜欢Android开发,就如博客副标题一样,我想做个好的App。在摸索过程中,GitHub上搜集了很多很棒的Android第三方库,推荐给在苦苦寻找的开发者,而且我会不定期的更新这篇文章。首先感谢以下盆友对本文的捐助:*文光 2014/4/24*建宏 201转载 2015-01-30 11:14:46 · 684 阅读 · 0 评论 -
Android L Material Design 初探 (基于AppCompat v21)
学习Implementing Material Design in Your Android app、AppCompat v21 — Material Design for Pre-Lollipop Devices!这两篇博客,自己动手实现,体验一下MaterialDesign。一、Shadow使用设置属性elevation。但是使用兼容包无法起效,不过可以原创 2015-01-06 21:26:16 · 1582 阅读 · 0 评论 -
Material Design Style Widget(一)──MaterialCheckBox
一、参考http://fezvrasta.github.io/bootstrap-material-design/bootstrap-elements.html https://github.com/zcweng/ToggleButton https://github.com/navasmdc/MaterialDesignLibrary二、效果图原创 2015-01-27 17:47:12 · 776 阅读 · 0 评论 -
CheckBoxGroup
之前做个一个投票应用,投票可以多选,但是又有上限,比如5选3,跟多选题一样。当时就写了个组合控件。 关键代码如下: public void init(List<String> texts, int maxCheckedNum) { setOrientation(VERTICAL); this.maxCheckedNum = maxCheckedNum;原创 2015-03-16 21:06:33 · 2487 阅读 · 0 评论 -
Watch That Baseline Alignment
原文Let’s go out on a limb and say that every Android developer at one point or another uses LinearLayout to build a row of elements.Let’s take the following simple layout as an example of what I mean.转载 2015-03-20 15:35:00 · 531 阅读 · 0 评论 -
Android通过Wifi来调试你的应用
原文在Android中调试我们经常要用一根USB数据线连接到手机和电脑,一方面麻烦不说,手机一直连着电脑充电时间长了对手机也是一种伤害,另一方面如果哪一天忘记带USB数据线就很悲催了。今天就来教大家一种通过wifi来连接手机调试的方法,瞬间高大上有木有?而且不需要root,以后你就可以隔空给你公司的测试妹子安装/卸载apk了。连接方法 方法很简单,具体步骤如下:1.先确保你手机和电脑运行在同一w转载 2015-03-14 10:51:03 · 395 阅读 · 0 评论 -
ImageView的ScaleType属性浅析
1.关注重点图像能否完全显示(是否裁剪了)视图有无空白(视图是否被图像充满)图像是否变形(图像宽高比是否变化)2.结论 ScaleType 图像能否完全显示 视图有无空白 图像是否变形 FIT_XY 能 无 可能 FIT_CENTER 不一定 无 否 FIT_START 不一定 无 否 FIT_END 不一定 无原创 2015-03-13 17:02:57 · 391 阅读 · 0 评论 -
Material Design Style Widget(二)──MaterialRadioButton
一、参考链接二、效果图 三、思路1、大致思路不断的重绘。2、具体思路所谓动画,变化的有三个量──外圆环的颜色、内圆形的半径、内圆形的颜色。所以,根据动画已经进行的时间(interpolatedTime,归一化过的),计算并更新这三个量,然后重绘(调用 invalidate函数,使得系统调用 draw 函数,在 draw 函数使用更新过的量绘制图形)即可。四、补插器值得注意的是,check 动画时,原创 2015-03-13 15:19:30 · 1786 阅读 · 0 评论 -
避免Android 中的内存泄露
原文译文:Android 应用,至少在 T-Mobile G1上,被限制最多使用16MB 的堆。它对一个手机来说是很多的内存,然而相比一些开发者想要获取的却是很少的内存。即便你不打算用完全部的内存,你也应该尽可能的少用,以使得其他应用可以运行,不被 kill 掉。Android 可以在内存中保持的应用越多,用户在他的应用中间切换也就越快。作为我工作的一部分,我研究了存在于 Android 应用中间的翻译 2015-03-11 20:16:30 · 333 阅读 · 0 评论 -
ScrollView好用技巧
原文(需要翻墙) 译文:ScrollView 是 Android 中最常用的控件之一,也是最容易用的控件之一。当内容屏幕放不下的时候,把它放到 ScrollView 中就完事。你甚至不会出错,因为 ScrollView 一次只接受一个子节点。然而,有一种使用情况稍微有点复杂,除非你仔细阅读了文档。假设你的应用要展现一段文字和几个按钮。文字的长度可变,可能长于屏幕也可能短于屏幕。你想要把文字放到 S翻译 2015-03-11 21:01:47 · 496 阅读 · 0 评论 -
双层布局 DoubleLayerLayout
前言之前用过赶集生活 App,主界面向下滑动可以露出天气信息。效果不错。不仅充分的利用了空间,也给用户以发现的乐趣。所以,我也做了一个这样的布局。效果图思路DoubleLayerLayout 继承自 RelativeLayout。正常情况下,foreground view 挡住 background view。滑动时,让 foreground 跟随手指移动,露出 background view。同时原创 2015-03-17 14:40:30 · 1549 阅读 · 0 评论 -
Layout Inflation as Intended
原文Layout inflation is the term used within the context of Android to indicate when an XML layout resource is parsed and converted into a hierarchy of View objects.It’s common practice in the Android SD转载 2015-03-20 16:38:29 · 502 阅读 · 0 评论 -
Context, What Context?
原文Context is probably the most used element in Android applications…it may also be the most misused.Context objects are so common, and get passed around so frequently, it can be easy to create a situat转载 2015-03-20 16:17:07 · 817 阅读 · 0 评论 -
自定义EditText—带有清除功能,在显示多行文本时清除按钮位于整个EditText的右下角
自定义带有清除功能的EditText不难,网上很多源码原创 2014-10-22 10:45:08 · 1281 阅读 · 3 评论