![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 65
姜康
读书,行路,阅人
展开
-
自定义View-画一个会动的太极图
效果步骤分解像太极图这种比较规则的图形,一般就是用数学知识进行图形分解,分成一个个基本图形,比如线段,圆,矩形,扇形,多边形等,然后一步步绘制出来即可。 - 分解太极图@Override protected void onDraw(Canvas canvas) { int width = getWidth(); int h原创 2018-01-12 18:20:59 · 824 阅读 · 0 评论 -
Android 语音播报实现方案(无SDK)
类似支付宝收款时候的语音播报功能:当别人扫描你的收款码,你收到钱之后,就会听到“支付宝到账12.55元”的语音播报。原创 2017-12-29 11:30:50 · 6949 阅读 · 5 评论 -
今天上班忘带Android数据线了
真正不需要数据线,就可以Debug原创 2017-12-29 11:32:51 · 397 阅读 · 0 评论 -
巧用Gradle Wrapper 解决实际问题
关于gradle,会遇见哪些问题?国内gradle下载太慢,项目初始化时间长jenkins中关于gradle的环境配置麻烦新手配置gradle麻烦gradle wrapper我们执行build任务的时候,可以用两种方式gradle build和./gradlew buildgradle build 需要配置gradle环境变量, 而./gradlew build 则是利用项目下的gra原创 2017-12-29 11:33:43 · 2341 阅读 · 0 评论 -
多线程下载,断点续传技术要点---Http Header
涉及到的HeaderAccept-RangesRangeIf-RangeContent-RangeAccept-Ranges:表示自身支持范围请求(partial requests),字段的具体值用于定义范围请求的单位。当客户端发现Accept-Ranges时,可以尝试继续中断了的下载,而不是重新下载。语法:Accept-Ranges: bytesAccept-原创 2018-01-08 17:59:45 · 1026 阅读 · 0 评论 -
Handler使用场景以及源码分析
路漫漫其修远兮,吾将上下而求索Handler的使用场景子线程操作完成之后,通知主线程执行操作首先在主线程创建一个Handler实例private val MSG_WHAT: Int = 1000private var mHandler = object : Handler() { override fun handleMessage(msg: Message原创 2018-01-15 20:51:15 · 593 阅读 · 0 评论 -
Android里的SparseArray
除了我们常用JDK提供的容器以外,Android还提供的自己的容器类,如SparseArray就是其中比较常见的一个类。特点SparseArray是一个整形到对象的映射;在整形到对象的映射这方面,它比HashMap在内存上更有效率;因为它避免了自动装箱的key,它的数据结构不依赖一个额外的Entry对象它把映射关系存储在两个数组中,用二分查找算法查找元素;这种实现不宜用在含有...原创 2018-03-29 23:08:43 · 2707 阅读 · 0 评论 -
WebView HTTPS页面引用HTTP资源的问题
问题WebView页面图片无法显示; log报错:chromium: [INFO:CONSOLE(0)] "Mixed Content: The page at xxx was loaded over HTTP原因如果不单独设置,WebView是不支持在Https域名下加载Http资源的。设置办法: //允许混合模式(http与https) if (Bu...原创 2018-03-20 16:35:08 · 4050 阅读 · 0 评论 -
Android SQLite 简单的使用步骤
Android开发过程中可以用SQLite储存结构化数据,如联系人信息之类的。由于SQLite的操作API是相当底层的,因此开发者需要花费很多时间去手动处理SQL查询语句,一旦数据结构改变就得相应的更新SQL语句,这个过程非常耗时,也容易出现错误。 同时,开发者不得不写很多样板代码来转换SQL语句与数据对象。现在Google比较推荐的做法就是用Room作为一个访问你数据中信息的抽象层,当...原创 2018-03-25 20:26:12 · 2629 阅读 · 0 评论 -
设计一个FrameLayout(Kotlin)
拆零件,然后再把零件拼装回去,来来回回对其结构也就熟悉了FrameLayout的特点子View按照添加顺序层叠显示FrameLayout的尺寸与其最大子View(可见的)的尺寸相等(加上padding值)如果要让GONE的子View参与计算,则需要把setMeasureAllChildren(boolean) ,setConsiderGoneChildrenWhenMea...原创 2018-03-25 21:29:56 · 2815 阅读 · 0 评论 -
Application启动流程
先对整体有了一个基本的认识之后,再去看细节谈到Android Application的启动流程,很多文章都是各种源码类和方法的一堆调用关系,这样的文章就算看一百遍,也只是云里雾里。源码得看,但是最好不要一下子深陷到源码的细节之中,不可自拔。这里站在前人的基础之上做一个总结。在说应用的启动流程之前,得先了解一下Android系统的启动流程,因为Application的启动是离不开系统...原创 2018-03-27 22:20:58 · 2622 阅读 · 0 评论 -
RxJava实例-按钮点击数累加
RxJava实例RxJava实例-线程切换效果图点击累加.gif说明在一定时间内(3s),对点击按钮的次数进行累计,每点击一下,输出一条log,当时间到时(3s),会输出这段时间内点击的次数buffer操作符实现这种效果的办法当然有很多种,这里用RxJava的buffer操作符来简单写一个demo。image.png这张图简单明了,不用多说。实现方式之前参考的代码用的是原创 2017-05-16 09:43:24 · 1156 阅读 · 0 评论 -
RxJava实例-用debounce实现的简单即时搜索
效果图debounce.gif说明运用debounce操作符进行文本搜索,输入单个字符并不会触发搜索,而是在等待一定时间后才触发搜索。debounceimage.png上面这个图并不是很直观,换一个图image.pngdebounce的意思是“去除抖动”,debounce操作符对源Observable每产生一个结果后,如果在规定的间隔时间内没有别的结果产生,则把这个结果原创 2017-05-16 09:43:27 · 1105 阅读 · 0 评论 -
使用Loader获取Android联系人列表
换一种方式获取Android联系人列表吧,别再用depressed的方法了,用简单的办法获取联系人列表,并把结果封装成标准json返回原创 2017-09-23 17:12:11 · 585 阅读 · 0 评论 -
Android中 不那么常用但非常重要的控件属性
android:inputType参数类型说明android:inputType="none"--输入普通字符android:inputType="text"--输入普通字符android:inputType="textCapCharacters"--输入普通字符android:inputType="textCapWords"--单词首字母大小android:inputType="textCa原创 2017-05-16 11:47:38 · 348 阅读 · 0 评论 -
Android分享---调用系统自带的分享功能
实现分享功能的几个办法1.调用系统的分享功能2.通过第三方SDK,如ShareSDK,友盟等3.自行使用各自平台的SDK,比如QQ,微信,微博各自的SDK这里就记录下第一种办法。分享文本信息 Intent textIntent = new Intent(Intent.ACTION_SEND); textIntent.setTy原创 2017-05-16 09:43:22 · 2100 阅读 · 1 评论 -
Handler简单分析-runOnUiThread,view.post()
网上有很多关于Handler的帖子,但是看了那么多,不自己亲自分析一下,还是虚得很哪些地方用到了Handler?1.runOnUiThread(Runnable action)我们在Activity中写处理逻辑的时候,经常会用到这个方法,用来保证代码在UI线程中执行。来看看它是怎么实现的: /** * Runs the specified action on the UI th原创 2017-05-16 09:43:19 · 374 阅读 · 0 评论 -
Java中的synchronized
最近发现自己对synchronized不怎么熟悉,就在网上找了下相关文章,做个笔记,文末有参考的文章链接作用1.修饰一个代码块,被修饰的代码块称为同步语句块,起作用的范围是{}大括号括起来的代码,作用的对象是调用这个代码块的对象。2.修饰一个方法3.修饰一个静态方法,synchronized修饰的静态方法锁定的是这个类的所有对象4.修饰一个类修饰一个代码块一个线程访问一个对象中的原创 2017-05-16 09:43:14 · 177 阅读 · 0 评论 -
RxJava实例-线程切换
简书原文链接:RxJava实例-线程切换UI包括两个按钮,一个进度条,一个RecyclerView,其中RecyclerView用来显示log信息,后面的例子都是这个形式。原创 2017-05-16 08:02:31 · 399 阅读 · 0 评论 -
Android 中的Dalvik和ART是什么,有啥区别?
什么是Dalvik?Dalvik是Google公司自己设计用于Android平台的虚拟机。Dalvik虚拟机是Google等厂商合作开发的Android移动设备平台的核心组成部分之一。它可以支持已转换为 .dex格式的Java应用程序的运行,.dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。Dalvik 经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且原创 2017-05-16 09:42:41 · 526 阅读 · 0 评论 -
Android Studio 使用过程中遇到的坑
漫漫长路,遇坑填坑编译时报IOException错误,不能创建空文件夹或者不能删除某个文件或者文件夹在排除代码错误的情况下:1.检查是否项目文件打开了或者控制台正在操作相关的文件夹,如果有就关闭,再重新编译。Android Studio 使用时有的Module中代码报找不到R的错误在排除代码错误的情况下:1.单独Make一下那个找不到R的Module。EmptyThrowable:The APK原创 2017-05-16 09:42:46 · 453 阅读 · 0 评论 -
adb 详细使用文档
原文链接:https://github.com/mzlogin/awesome-adb基本用法命令语法为命令指定目标设备启动/停止查看 adb 版本以 root 权限运行 adbd指定 adb server 的网络端口设备连接管理查询已连接设备/模拟器USB 连接无线连接(需要借助 USB 线)无线连接(无需借助 USB 线)应用管理查看应用列表所有转载 2017-05-16 09:42:49 · 3722 阅读 · 0 评论 -
Intent之Action
Intent之ActionIntent.ACTION_MAIN标识Activity为一个程序的开始Intent.ACTION_CALL 呼叫指定的电话号码data:tel:12345678Intent.ACTION_DIAL调用拨号面板data:tel:12345678Intent.ACTION_ALL_APPS列出所有的应用Intent.ACTION_原创 2017-05-16 09:42:52 · 254 阅读 · 0 评论 -
WebView---js调用原生日历控件
效果图效果图.pnghtml文件 function showDatePickerDialog(){ jk.showDatePickerDialog(); } 打开日历选择器 Android public class WebActivity extend原创 2017-05-16 09:42:55 · 1539 阅读 · 0 评论 -
Android开发中那些常见到让人忽视的基础知识
Android版本和API Level对应表Paste_Image.pngAndroid支持库(Android Support Library)来由:许多情况下,某项功能可能对应用开发者很有用,但是添加到 Android 框架却并不合适。例如,某个应用可能仅需要用于特定用例的某项功能,如在不同版本的 Android 系统之间顺畅切换。为了解决这一问题,Android SDK 添加原创 2017-05-16 09:42:57 · 494 阅读 · 0 评论 -
gradle命令报错Unsupported major.minor version 52.0的解决办法
原因Java版本低,需要使用Java8为什么Android Studio里配置的gradle参数可以运行,点击build,run也可以运行,gradle命令行就不行?两者使用的Java环境不一样。Paste_Image.pngPaste_Image.png怎么解决?下载Java8;配置java环境变量(Mac,Window各自google一下如何设置)注意:下载jdk,原创 2017-05-16 09:43:00 · 2062 阅读 · 0 评论 -
Android中的SystemClock
三个时间1.currentThreadTimeMillisReturns milliseconds running in the current thread.2.uptimeMillisReturns milliseconds since boot, not counting time spent in deep sleep.3.elapsedRealtimeReturns mil原创 2017-05-16 09:43:06 · 520 阅读 · 0 评论 -
利用系统相机拍照,摄像,从系统相册中选择图片
打开系统相册,选择照片;打开系统相机,拍照;打开系统相机,摄像原创 2017-09-23 17:08:51 · 410 阅读 · 0 评论 -
Gradle 库依赖关系的管理
查看库依赖关系列出指定module的依赖关系./gradlew -q moduleName:dependencies > outfile.txt列出多个指定module的依赖关系./gradlew -q dependencies moduleName1:dependencies moduleName2:dependencies > outfile.txt...原创 2018-07-01 13:38:06 · 828 阅读 · 0 评论