![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 91
freeCodeSunny
android开发
展开
-
多TAB可悬浮头控件
这连续两篇其实都已经写了很久了。只是今天在发布到这边源码地址 强势插入:不想看文章的同学可以直接去下载源代码,代码地址如下:https://github.com/FreeSunny/RefreashTabView 在前一期中,我们做了悬浮头部的两个tab切换和下拉刷新效果,后来项目中要求改成三个tab,当时就能估量了一下,如果从之前的改,也不是不可以,但是要互相记住的状态就太原创 2015-11-01 12:53:56 · 5473 阅读 · 47 评论 -
Lottie-移动动画效果框架
Lottie简介 Airbnb开源了一个名叫Lottie的动画库, 他同时支持ios, android, react_native。 Android : https://github.com/airbnb/lottie-android iOS : https://github.com/airbnb/lottie-ios React Native : https:/原创 2017-03-31 11:37:59 · 4377 阅读 · 0 评论 -
Sources for 'Android API 25 Platform' not found
前言 采用Android Studio开发Android工程,很多时候都需要去翻源码!很多人都应该出现过导航过去是.class,看不到源代码信息,这种情况很多人往往采用降低gradle中指定的sdk版本来解决。我也遇到了这个问题,之前sdk指定为24源代码就能查看,可是一旦指定为25就只能导航到.class,可是我本地明明已经下载了Sources for Android SDK 25,原创 2017-02-10 15:31:03 · 9000 阅读 · 9 评论 -
RecyclerView Adapter简单封装
前言 今天是新年第一天,本来打算在上一年的最后一天写下来的,但是由于玩的时间长了一点,所以今天才写,算是在新的一年开一个好头,新年新气象嘛! 至于为什么要写这个文章呐!由于项目中以前都是用ListView实现的列表,很多东西都已经习惯化了,每次都是由的新的模块或者功能才使用RecyclerView,因此一直都没有完整的总结一遍,这次也是在一个新的项目中,准备完全采用Recyc原创 2017-01-02 01:17:18 · 2451 阅读 · 0 评论 -
Android动画之属性动画(上)
前言 在前面的文章中我们讲述了Android动画之视图动画学习了怎么对一个view实现动画,可以实现动画包括平移,旋转,缩放,渐变和帧动画,这一篇我们来学习一个新的动画实现方式。属性动画为什么需要属性动画? Android在3.0引入了属性动画,既然之前已经有属性动画了,为什么还要引入属性动画呐?视图动画不好用吗?还是视图动画不能够实现功能?随着系统的迭代更新,和设计的发展,原创 2016-10-03 19:08:50 · 1270 阅读 · 0 评论 -
Andorid自定义attr的各种坑
在开发Andorid应用程序中,经常会自定义View来实现各种各样炫酷的效果,在实现这吊炸天效果的同时,我们往往会定义很多attr属性,这样就可以在XML中配置我们想要的属性值,以下就是定义属性值可能遇到的各种坑。大家都知道怎么定义attr属性,一般如下:<declare-styleable name="Sample"> <attr name="custom" format="string|r原创 2016-03-17 11:17:16 · 1645 阅读 · 0 评论 -
Android WebView填坑记录
前言 在应用程序开发过程中,经常会采用webview来展现某些界面,这样就可以不受发布版本控制,实时更新,遇到问题可以快速修复。 但是在Android开发中,由于Android版本分化严重,每一个版本针对webview都有部分更改,因此在开发过程中会遇到各种各样的坑,因此在此总结一下在开发过程中遇到的一些坑!样例 这里不是讲解怎么进行webview开发,而是只罗列原创 2016-05-28 14:37:50 · 16120 阅读 · 3 评论 -
Android TextView disable颜色坑
今天在项目中发现我们有一个小细节以前运行好好的视觉效果现在不对了,应该说有一段时间不对了,只是没有关注这一个小细节,刚好今天改代码碰到他,就探究了一下,顺便把解决方案给记录一下。还原整个过程 这里我们来还原一下整个过程,我们就写一个类似的效果来复现一下整个过程,看看到底是什么原因。布局 我有如下一个TextView的布局: <TextView android原创 2016-11-13 20:26:44 · 5985 阅读 · 0 评论 -
聊聊android界面适配
为什么要适配?我们先来看一组统计数据,这是国外opensignal给出的统计数据,我们来看看去年8月份的统计数据,参考链接我们先来看看几个图表: 2014设备分布图: 2015设备分布图: 设备品牌分布: 屏幕尺寸分布: 系统分布图: 与ios对比图: 从上面几个图就可以看出android设备多,品牌多,屏幕尺寸多,还有系统版本分布比较大,碎片化比较严重,这也就是android之所以要原创 2016-03-27 21:12:16 · 2158 阅读 · 2 评论 -
Android动画之属性动画(下)
前言 前面我们已经完整的讲述了属性动画的实现,我们已经学会了怎么实现动画,如果没有属性我们也学会了怎么添加属性,还学习了用ValueAnimator来实现动画。Evaluator 这里我们来学习剩下的属性,首先我们来看看Evaluator,Evaluator是什么?他有什么用? Evaluator翻译为求值器,或者表达式,反正只可意会不可言传,就是给一个表达式,计原创 2016-10-03 20:21:28 · 1741 阅读 · 0 评论 -
Android TV Overscan
开发的TV应用发现在部分电视上可以显示完整,而其他部分电视显示不全,周围都会遮挡了。原因 这是因为部分老的电视有一个overscan的概览,什么叫overscan呐?官方解释如下: During the evolution of TV technology, overscan originally described an area of TV content outside of原创 2017-04-06 10:59:39 · 4457 阅读 · 0 评论 -
Glide解析
前言 移动应用几乎都有图片加载的需求,很多时候需要从远程加载,有时也需要从本地加载,以前都往往是自己实现,这就需要考虑各种各样的情况,比如缓存策略,需要综合考虑内存使用,不同的图片有不同时间,不同空间的缓存策略,其次是加载策略,是原图加载,还是需要裁剪,是一次生成多种尺寸的缩略,还是不生成,有时还需要考虑网络状况来加载更小尺寸的图。加载的图片是否是gif,还需要对图片的展示进程处理。有时原创 2017-05-15 16:53:40 · 800 阅读 · 0 评论 -
Error: Expected resource of type raw [ResourceType]
问题 工程里面用到了将一个drawable图片当做输入流来使用:InputStream inputStream = getResources().openRawResource(R.drawable.guide1); 在debug包使用的时候是没有问题的,但是一旦打release包的时候就会打包失败,提示:Error: Expected resource of type ra原创 2017-07-13 15:08:32 · 1878 阅读 · 0 评论 -
嵌套滚动多TAB可悬浮头效果实现
前言 在前面的文章中我们已经实现过嵌套滚动可以悬浮头效果,当时有两种实现: 1. Listview多tab上滑悬浮 一种是一个ListView里面切换数据源,同时监控页面滚动,布局页面中设置两层,一层放置悬浮头,滚动到一定位置时,显示出悬浮头 2. 多TAB可悬浮头控件还有一种是上面悬浮头部内容,底层多tab采用viewpager来实现,在viewpage原创 2017-12-31 18:00:45 · 2695 阅读 · 7 评论 -
扫脸动画
需求 现在视频应用越来越多了,这里我们希望在视频开始之前,希望用户脸部能够正对着手机屏幕,以达到更好的效果。 基于上述的需求,这里我们就需要在视频流上层叠加一个让用户正对手机屏幕的效果,要求是悬浮层具有半透明,不完全遮挡视频流,同时在界面上留出脸部的形状,让用户有参考物,最后为了更好的视觉效果,我们需要在脸部有一个扫描效果。效果图 这里我们先呈现一个视觉效果图:原创 2017-10-19 10:40:14 · 1212 阅读 · 0 评论 -
ShimmerTextView
产品中有一个需求,要求TextView的文字有一个高亮的效果,高亮的同时有跑马灯效果! 本来想在网上找一个现成的用用,比如Facebook出的Shimmer,还有很多,但是都感觉代码太多,因此撸了一个简单版的,talk is cheap,show me you code。实现 我们知道TextView的文字的颜色是由Paint根据Color控制的,我们可以设置Paint的Sh原创 2017-10-17 14:51:47 · 443 阅读 · 0 评论 -
MediaProjection与MediaRecorder实现录屏
纸上得来终觉浅,绝知此事要躬行,Android在5.0提供了MediaProjection来实现录屏,但是一直都没有尝试过,这里尝试了一下该方式进行录屏。 其实Demo已经写好很久了,但是始终有一个问题,在某些机型上会偏色,因此这里写出来看看是否有人遇到同样的问题,且希望告知解决方案。录制 这里界面上有两个按钮,一个控制录制与暂停,另外一个是播放按钮,既然是录制,当然录制完成原创 2017-10-30 15:42:46 · 2655 阅读 · 0 评论 -
Binary XML file line #17<vector> tag requires viewportWidth >0
[TOC]前言 近期把项目中的support包升级到了26.1.0,看起来在手机上运行的稳稳的,没翻船!之后提交,测试就报了一个bug说5.0以下的手机都不能运行了!因此就排查了问题原因。问题 首先我们复现一下问题,看看崩溃日志,崩溃日志主要有以下两个:E/VdcInflateDelegate: Exception while inflating <vector>org.x原创 2017-10-10 16:36:13 · 1817 阅读 · 0 评论 -
Android拖拽动画实现
前言 在Android开发过程中,经常会遇到需要实现拖拽动画,拖拽动画的实现比较简单,可以采用多种方式来进行实现,这里主要是因为在使用过程中遇到了一种不常见的情况,因此记录一下。拖拽实现 这里我们先写一个demo来实现拖拽动画, 效果如下: 上面的效果就是最终需要实现的效果,按住可以拖动,放开手指后,向靠近的一边移动比贴边,如果是点击则处理点击事件,其实就是微信视原创 2017-06-18 12:37:41 · 4885 阅读 · 0 评论 -
Android送花动画
近期有一个需求,需要做一个送花的动画,初始点击一朵花就出现一个动画,再点一次又出现一次,就算是连击,点击多少次就出现多少次,但是感觉效果太丑,因此将连击合并在一起只更改数字。效果 这里先做一个demo,效果就是demo运行中截取的,大致效果如下: 多次连击只需要更新数字,不在需要重新出现动画,只有当动画执行完毕后,才出现下一次动画。实现 这里主要包括几个元素,一个原创 2017-06-18 14:36:45 · 1309 阅读 · 0 评论 -
Android View部分消失效果实现
老需求 我们经常会有需求就是View消失的效果,这里我们说的消失往往是全部消失,我们可能采用一个alpha动画,在指定的时间内消失掉View,出现则实现相反的动画。我们一般都采用如下的实现: 采用tween动画实现:private void alphaTween() { AlphaAnimation alpha = new AlphaAnimation(1.0f, 0原创 2017-08-14 16:34:35 · 2570 阅读 · 0 评论 -
命令行指定的类打入单独的DEX
需求 Android有的时候有分DEX的需求,当方法数超过了66535这个数,我们就需要开启MultiDex,还有的时候我们有的部分需求是一直不会改变,那这个时候我们可以将对应的代码单独打包成DEX,可以预先放置到Assert目录下, 在需要的时候进行加载 热更新也有这样的需求,将出问题的代码单独打入一个path dex中,我们知道在加载dex到内存中时,如果不存在odex文原创 2017-07-20 17:24:19 · 1126 阅读 · 0 评论 -
Android开发环境搭建
前言 学习Android遇到的第一个拦路虎不是知识点的问题,而是开发环境的搭建,尤其是在国内这个环境,有点时候仅仅环境的安装就需要很久的时间,下面就给出搭建步骤,主要会介绍两个平台的搭建,windows,mac,linux在开发环境中比较少见,会稍稍带一笔。系统要求 Windows Microsoft® Windows® 7/8/10(32 位或 64 位) 最低:2GB原创 2016-09-27 19:48:12 · 551 阅读 · 0 评论 -
Android动画之视图动画
前言 动画在Android中是一个相当于重要的知识点,使用场景也很多,炫酷的界面效果少不了动画来提升,这里我们就先来说说Android中的动画,在说Android的动画之前,我们先来了解一下动画这个效果的通用含义。什么是动画? 我们在平常生活中,经常会遇到动画这个词,大家也不要想歪了,可不是大家理解的岛国xx片哦!,那动画究竟是什么呐?在不同的场景中,这个词的名词解释都不一样原创 2016-09-17 13:12:11 · 3084 阅读 · 5 评论 -
Android应用启动界面分析(Starting Window)
我们打开一个应用程序时,会出现一个启动界面,不同的手机,启动界面不一样,甚至有的手机还会出现一段时间的黑屏,出现时间的长短与启动启动的速度有关。启动画面是什么? 我们看到了启动的画面,那显示内容是在哪儿配置的呐?它是什么? 我们在应用程序配置清单AndroidManifest.xml中的application节点配置android:theme属性,如果不配置则获取系统默认属性,在该属原创 2016-04-27 20:13:40 · 12425 阅读 · 0 评论 -
Android应用程序常见编译问题解决
主应用程序中引用了外部的Module模块,出现了如下错误,不保证如下解决方法通用所有问题:1: Error:(2) Error retrieving parent for item: No resource found that matches the given name ‘android:TextAppearance.Material.Widget.Button.Inverse’. 项目中引原创 2016-03-16 19:38:55 · 9615 阅读 · 0 评论 -
Android应用程序安装过程浅析
我们知道在android中,安装应用是由PackageManager来管理的,但是我们发现PackageManager是一个抽象类,他的installPackage方法也没有具体的实现。那在安装过程中是怎么执行的呐?调用方查看代码可以知道ApplicationPackageManager是直接继承自PackageManager的,所以最终代码会调用ApplicationPackageM原创 2016-04-07 17:14:58 · 10301 阅读 · 1 评论 -
Android输入法弹出时覆盖输入框问题
当一个activity中有输入框时,点击输入框,会弹出输入法,界面的变动与manifest中对应的android:windowSoftInputMode有关,一般可以设置的值如下, <activity android:windowSoftInputMode=["stateUnspecified","stateUnchanged”, "stateHidden","stateAlwaysHidd原创 2016-03-22 19:39:48 · 3133 阅读 · 8 评论 -
AsyncTask解析
ps:已经很久不写东西了,写的不好,望见谅。这一篇也是很久之前写在其它blog上的,搬家好几次都没有成功,因此手动搬过来了 1:android在新版本中不允许UI线程访问网络,但是如果需要访问网络又改怎么办呐?这里有很多解决方案,比如新开一个线程,在新线程中进行访问,然后访问数据,返回后可能会更新界面也可能不更新界面,这个就涉及了怎么与UI线程通信的问题。 2:在android中UI线程中不能执原创 2015-11-24 21:34:19 · 1013 阅读 · 0 评论 -
其实你不知道MultiDex到底有多坑
其实你不知道MultiDex到底有多坑 2015-09-26 by 总悟君 该片文章转自http://blog.zongwu233.com/the-touble-of-multidex/ 因为不能直接转载,因此手动拷贝了文章进行转载,后续转载的人请注明出处。遭遇MultiDex愉快地写着Android代码的总悟君往工程里引入了一个默默无闻的jar然后Run了一下, 经过漫长的等待A转载 2016-03-25 15:51:44 · 2025 阅读 · 0 评论 -
Android 6.0 权限管理(permission)
大家知道android应用程序开发的时候都需要申请很多权限,比如发起网络请求需要网络权限,在安装应用程序的时候,在6.0之前的手机会列出当前应用程序都申请了哪些权限,并且需要用户点击同意才能使用,这样其实是有一个弊端的,就是如果应用申请了某些权限,但是这个权限对应使用该应用程序不是必须的(有权限更好,没有权限也能玩),这样用户如果不愿意授予该权限,则会导致用户流失。 Andorid系统在6原创 2016-03-03 22:49:25 · 3103 阅读 · 1 评论 -
Android应用字体替换
前一段时间应用要求替换默认显示的字体,不仅仅是一行替换,而是整个全局字体替换,如果只一个Textview很容易就能替换需要的字体。private static Typeface typeface;TextView tv = new TextView(this);tv.setTypeface(getTypeface(context));public static Typeface getTypefa原创 2016-03-09 19:44:05 · 4406 阅读 · 0 评论 -
Android Sparse*Array容器解析
我们知道android为了减小空间的占用,在系统中提供了特有的容器,这里主要是替换了键值对的存取容器,如果能明确知道在使用的过程中键是整型,则替代该类型的Map容器的就是sparse家族了,这里主要有以下几种sparse容器,SparseBooleanArray,SparseIntArray,SparseLongArray,SparseArray. SparseBooleanArray主原创 2016-04-02 22:08:25 · 2348 阅读 · 2 评论 -
Android文本排版实现
在项目中有一个小功能需要实现,就是对多行文本进行排版布局,每一行的内容又分为两部分,左边为标题,右边为描述,左边内容长度不确定,右边的内容需要对齐,如有换行也需要对齐右边的文本。效果图 效果图如下图所示: 可以看到内容分成了两部分,左边的颜色与右边不一致,右边的描述文案统一对齐。实现方案 以上功能,由于输入内容输入行数不确定,并且左边的文案长度也不确定,因此不能直原创 2016-04-18 16:18:56 · 7910 阅读 · 0 评论 -
Android事件分发机制浅析
事件机制是Android中一个比较复杂且重要的知识点,比如你想自定义拦截事件,或者某系组件中嵌套了其他布局,往往会出现这样那样的事件冲突,坑爹啊!!事件主要涵盖onTouch,onClick,onTouchEvent,dispatchTouchEvent,onInterceptTouchEvent等等一系列事件,并且事件间还相互交互耦合,甚至有的事件还有返回值,一会true,一会false,什么情况原创 2016-05-05 16:58:29 · 6462 阅读 · 3 评论 -
Android应用程序包解析过程浅析
我在上一篇文件中Android应用程序安装过程浅析粗略分析了一下Android应用程序安装过程,其中有一步说到了apk包的解析,但是没有详细分析,这里我们就来粗略分析一下包的解析过程。流程图执行过程 从上面的流程图可以看到,包的解析过程比安装过程执行步骤少很多,也简单一点。那我们就来详细的一步一步的进行剖析一下,我们从外部调用该方法开始分析:private void installPac原创 2016-04-10 19:00:54 · 10967 阅读 · 2 评论 -
Android Studio NDK/JNI开发
前言 我们在一步一步学习JNI(一)学习了怎么进行Jni开发,当时说道了怎么编写native函数,怎么进行加载,怎么进行so生成,当时的都是在eclipse下生成的。这里我们就来说说Android Studio下怎么进程开发。下载ndk 在jni开发之前,需要先下载NDK。路径如下: 下载完成后,NDK是放置在SDK下的,有一个ndk-bundle文件夹。老版本是原创 2016-08-13 23:05:01 · 806 阅读 · 0 评论 -
Android 标题栏(一)
标题栏在每个应用中都有,有各种各样的标题栏,今天我们就主要来说说标题栏怎么做,主要内容涉及到自定义标题,ActionBar,Toolbar等知识。自定义标题 几年前开发安卓是没有统一的标题的,每一个页面都需要自己来布局标题,如果有多个页面标题类似,往往就统一编写出来一个布局,统一管理和处理,这里我们来看看怎么编写自定义布局标题,不采用系统提供的,因为有时候有些特定的或者特殊效果的标题,自原创 2016-08-20 21:01:36 · 12289 阅读 · 1 评论 -
Android 标题栏(二)
在前一篇文章Android标题栏(一)中我们已经讲解了一些属性,接下来我们继续讲解剩下的属性。ActionBar & Toolbar设置ActionView 我们可以在菜单中设置ActionView,比如搜索,他是一个带图标和输入框的控件,他分别有两种不同的形态,展开和折叠。接下来我们就讲讲怎么设置ActionView。 1.在menu菜单的item中设置actionVi原创 2016-08-20 23:17:21 · 1793 阅读 · 0 评论 -
Android 开发中,有哪些坑需要注意?
这个是看知乎的时候发现的一个问题,感觉挺有意思,就将自己遇到的坑记录下来。 1:Andorid L theme colorPrimary 不能使用带有alpha的颜色值,否则会有异常抛出, 直接判断了是否alpha是否等于0或者255,其他都会异常@Overrideprotected void onApplyThemeResource(Resources.Theme theme, int r原创 2016-01-08 12:40:11 · 2288 阅读 · 0 评论