Android开发
文章平均质量分 88
T9的第三个三角
Blog:http://outofmemory.top
简书:http://www.jianshu.com/u/46cb5df3d852
GitHub:https://github.com/dazhaoDai
展开
-
关于JPEG、PNG、GIF、WEBP图片格式的理解与使用场景
关于常用JPEG、PNG、GIF、WEBP图片格式的理解前言在了解这三种图片格式之前,先来了解几个和图片格式相关的概念有损/无损压缩图片文件格式有可能会对图片的文件大小进行不同程度的压缩,图片的压缩分为有损压缩和无损压缩两种。有损压缩对图像本身的改变,在保存图像时保留了较多的亮度信息,而将色相和色纯度的信息和周围的像素进行合并,合并的比例不同,压缩的比例也不同,由于信息量减少了...原创 2019-11-11 15:27:36 · 6131 阅读 · 0 评论 -
Androidstudio高效管理第三方API的KEY及Gradle版本管理
延伸AndroidStudio 利用Gradle打包添加上版本名和版本号 第三方API的KEY的管理 Android开发,基本都会用到第三方SDK,例如百度地图、支付宝支付等。 通常第三方的KEY都是保存在AndroidManifest中: <!-- 百度地图的KEY--><meta-data android:name="com.baidu.l...原创 2017-06-25 21:57:17 · 2038 阅读 · 2 评论 -
Flutter初体验(一)——Mac 安装配置
Mac 安装配置 Flutter参考文档: https://flutter.io/setup-macos/ http://blog.csdn.net/zhangxiangliang2/article/details/755664121. 获取 Flutter SDK#### clone Flutter 1、使用git将Flutter项目克...翻译 2018-03-12 14:28:46 · 10331 阅读 · 2 评论 -
Flutter初体验(二)—— 创建第一个Flutter APP
Flutter初体验(二)— 创建第一个Flutter APP在第一篇文章 Flutter初体验(一)—Mac 安装配置,学习了配置 Flutter 开发环境,并运行了Demo项目,本篇根据官方教程,学习创建自己的第一个Flutter APP。 参考文档 https://flutter.io/get-started/codelab/项目需求您将实施一个简单的移动应用程序...翻译 2018-03-21 20:24:23 · 2381 阅读 · 0 评论 -
Android进阶 —— Android 单元测试入门
什么是单元测试?单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。比如我们可以测试一个类,或者一个类中的一个方法。为什么要进行单元测试?为什么要进行单元测试?说白了就是单元测试有什么好处,其实测试的好处无非就是减少bug、提高代码质量、使代码易于维护等。这样表达可能不太好理解,举个例子比如我们APP启动,从初始化到启动页,再进入首页,需要很长...原创 2018-05-10 11:59:57 · 507 阅读 · 0 评论 -
Android 进阶 ———— Handler系列之创建子线程Handler
上一篇我介绍了Handler机制的工作原理,默认情况下,ActivityThread类为我们创建的了主线程的Looper和消息队列,所以当你创建Handler之后发送消息的时候,消息的轮训和handle都是在ui线程进行的。这种情况属于子线程给主线程发消息,通知主线程更新ui…等,那么反过来,怎么才能让主线程给子线程发消息,通知子线程做一些耗时逻辑?? 之前的学习我们知道,Android的消...转载 2018-05-11 10:31:10 · 2519 阅读 · 0 评论 -
Android进阶 —— 深入理解AIDL进程间通信
Android 深入理解AIDL进程间通信前言关于AIDL的资料,层出不穷,但是能让人简单明了理解的文章不多,那么我们就自己撸一遍,清晰明了的理解一下AIDL的原理。准备在理解AIDL原理之前,先写一个简单的使用AIDL进行进程间通信的例子,根据这个例子来由浅及深的理解AIDL。先来定义实体类:UserBean.java 注意:如果要在AIDL中使用实体类,实体类必须...原创 2018-05-11 20:17:48 · 672 阅读 · 0 评论 -
Android进阶 --- Android虚拟机 JVM DVM ART 详解
JVM DVM ARTAndroid系统使用Dalvik Virtual Machine (DVM)作为其虚拟机,所有安卓程序都运行在安卓系统进程里,每个进程对应着一个Dalvik虚拟机实例。他们都提供了对象生命周期管理、堆栈管理、线程管理、安全和异常管理以及垃圾回收等重要功能,各自拥有一套完整的指令系统。Android之所以不直接使用JVM作为其虚拟机的原因有很多,版权问题我们暂且搁置一...原创 2018-07-24 11:59:46 · 1133 阅读 · 1 评论 -
Android进阶 ——— Android官方架构组件LiveData
上一篇文章,学习了Android官方架构组件的第一部分Android进阶 ——— Android官方架构组件Lifecycle初探LiveData 是一个可以感知 Activity 、Fragment生命周期的数据容器。当 LiveData 所持有的数据改变时,它会通知相应的界面代码进行更新。同时,LiveData 持有界面代码 Lifecycle 的引用,这意味着它会在界面代码(...原创 2018-08-23 11:33:05 · 1043 阅读 · 2 评论 -
Android进阶 ——— Android官方架构组件Lifecycle
初探Lifecycle是Android官方推出的架构组件,在谷歌开发者官微发布的正式发布 Android 架构组件 1.0 稳定版 | 附带中文介绍视频 简明扼要的阐述了推出的架构组件的作用及使用,也可以查看Android开发者官网。先来看看架构组件的第一部分Lifecycle。 在长篇大论之前,先要了解它的作用,为什么谷歌要推出Lifecycle?就是为了解决常见架构模式中,声明...原创 2018-08-21 10:15:24 · 517 阅读 · 0 评论 -
如何从零开始搭建自己的博客(通俗易懂)
序作为一名合(zhuang)格(bi)的程序猿,经常写点东西,肯定少不了各种网站、博客,通俗的CSDN,文艺的简书,强大的GitHub,以及微信、掘金、知乎等等风格迥异的平台。不过,再多的地方,也容不下一颗想捯饬的心,不管什么网站,都有自己固定的模板,统一的风格,这怎么能满足程序猿的一颗躁动的心?例如我的个人博客T9’s Developer,欢迎大家访问那就自己动手,利用各种开源工具,自己...原创 2018-10-11 13:40:09 · 16939 阅读 · 8 评论 -
如何从零开始搭建自己的博客(通俗易懂)
序作为一名合(zhuang)格(bi)的程序猿,经常写点东西,肯定少不了各种网站、博客,通俗的CSDN,文艺的简书,强大的GitHub,以及微信、掘金、知乎等等风格迥异的平台。不过,再多的地方,也容不下一颗想捯饬的心,不管什么网站,都有自己固定的模板,统一的风格,这怎么能满足程序猿的一颗躁动的心?Paste_Image.png那就自己动手,利用各种开源工具,自己搭建一个属于自己的个人博原创 2017-06-25 21:57:09 · 39903 阅读 · 13 评论 -
AndroidStudio 利用Gradle打包添加上版本名和版本号
延伸Androidstudio高效管理第三方API的KEY及Gradle版本管理 前言 利用AS的Gradle打包,实在是很方便,记住密码前提下,十几秒就能搞定,但是打出的APK,没有辨识度,命名都是app-release.apk;有时候为了方便保存到桌面,如果有多个版本或多个应用,自己都懵了,所以我们打包时候,自动添加上版本号和版本名称,实在是太方便不过。 方法 ...原创 2017-06-25 21:57:14 · 3745 阅读 · 2 评论 -
Java进阶 ——— Java多线程(四)之多线程局部变量TreadLocal
在了解ThreadLocal之前,一定要确定一个概念:ThreadLocal不是用来解决共享对象的多线程访问问题的那么ThreadLocal在多线程的作用是什么呢?从下面几个方面来了解ThreadLocal的作用ThreadLocal可以理解为:线程局部变量, 是每一个线程所单独持有的。其他线程不能对其进行访问, 通常是类中的 private static 字段,是对该字段初始值的一个拷贝,...原创 2018-12-30 17:37:32 · 669 阅读 · 0 评论 -
LocalBroadcastManager 注意事项
LocalBroadcastManager 只能用来在应用内发送和接收广播,不可用接收系统广播通知前言关于LocalBroadcastManager的使用,就不再详述,简单来说,有以下几个好处因广播数据在本应用范围内传播,你不用担心隐私数据泄露的问题。不用担心别的应用伪造广播,造成安全隐患。相比在系统内发送全局广播,它更高效。使用使用可以参考下面文章Android ...原创 2019-04-20 18:34:31 · 670 阅读 · 0 评论 -
Android menu属性详解
转自:http://blog.csdn.net/n3562141/article/details/50325717menu的属性展示<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android">...转载 2019-04-23 12:43:49 · 1022 阅读 · 0 评论 -
Android 字体部分加粗修改颜色
前言开发中,经常碰到需求是,某个TextView的文字,部分加粗,部分修改颜色,例如通常我们可以使用Spannable 通过Java代码实现,但是有没有更省时省力的方法呢?能在string.xml 中定义好,直接引入呢?答案是当然有Android系统提供了对简单的HTML标签的支持,方便开发者设置格式化的文本内容,比如斜体、粗体等。 通过android.text.Html.fromHtm...原创 2019-07-17 18:22:18 · 5490 阅读 · 3 评论 -
Android自定义View(二) -- Paint详解
本文是自定义View的第二篇,主要学习:Paint第一篇地址Android自定义View(一) – 初识本文计划根据HenCoder系列文章就行学习,所以代码风格及博文素材可能会摘自其中。第一篇中,学习使用Paint 的常用方法设置各种属性,配合drawxxx()方法绘制各种简单View,本篇主要对Paint进行详细了解,做出更细致、绚丽的效果。进入正题,Paint原创 2018-01-23 21:24:26 · 762 阅读 · 0 评论 -
Android自定义View(七) -- 属性动画(下)
前面学习的内容: Android自定义View(一) – 初识 Android自定义View(二) – Paint详解 Android自定义View(三) – drawText() Android自定义View(四) – Canvas Android自定义View(五) – 绘制顺序 Android自定义View(六) – 属性动画(上) 今天继续学习Android自定义View第七原创 2018-02-07 20:51:12 · 348 阅读 · 0 评论 -
Android获取设备唯一标识
获取Android唯一标识开发中,进程遇到需要获取设备唯一标识问题,有几种方法可以作为参考使用IMEI但是仅仅对Android手机有效,并且添加权限:android.permission.READ_PHONE_STATEpublic synchronized static String getid(Context context) { TelephonyManager Telep原创 2017-06-25 21:56:54 · 2142 阅读 · 0 评论 -
Android使用JobService实现后台服务
前言 在Android经常要实现定时服务,定时某个时刻推送消息或者更新数据,一般我们可能是开启Service,在Service中使用AlarmManager,setRepeating定时请求,但是从API19起,并不能保证时效的准确,在5.0以后,Google推出了一个JobService,用来执行一些并非即时执行的后台进程。使用 在JobService中有两个抽象方法onStartJob(Jo原创 2017-06-23 17:44:15 · 2113 阅读 · 0 评论 -
Android使用SparseArray取代HashMap
开发中,HashMap使用非常频繁,而HashMap是Java官方API,针对Android移动平台,性能并不合适,所以Google针对Android平台,推出了功能相同,更节省内存的SparseArray, HashMap, since lookups require a binary search and adds and removes require inserting and del原创 2017-06-23 17:41:33 · 502 阅读 · 0 评论 -
关于Google新的适配方式---FlexboxLayout
前言工欲善其事必先利其器,学习FlexboxLayout之前,先看看它是用来干嘛的,都有哪些特性,了解之后,再来利用它。先放上项目地址–flexbox-layout的GitHub地址正文概念 Flexbox,简单理解为弹性盒子,就是一个可伸缩的区域或者空间 在GitHub上,给出的介绍是一个将CSS Flexible Box Layout Module的类似功能带入Android的库,关于CS原创 2017-05-15 12:17:04 · 4573 阅读 · 0 评论 -
手把手教你将Android项目开源到JCenter两种方式以及挖坑和填坑(二)
前言上一篇文章介绍了通过gradle-bintray-plugin提交开源项目到JCenter–Android发布个人开源项目到JCenter两种方式以及挖坑和填坑(一)本篇介绍第二种,通过bintray-release插件发布开源项目到JCenter, 关于注册的方法,上一篇有过讲解,本篇不再讲解。 和第一种方法不同,不需要去创建maven仓库,配置只需要两步第一步 配置项目的buil原创 2017-05-04 18:39:59 · 865 阅读 · 0 评论 -
手把手教你将Android项目开源到JCenter两种方式以及挖坑和填坑(一)
- 前言开发中,或多或少都会用到无私的程序猿分享的开源项目,Androidstudio中使用开源也很方便 例如家喻户晓的Rxjava,只需要一句话compile 'io.reactivex:rxjava:1.1.6',就可以添加到项目中,时间久了,是不是自己也想试试开源一下自己的成果,给大家用用,或者成(zhuang)就(bi)感? 开整吧,尽量详细讲解- 注册(第一坑)注册本来很简单,但是在这原创 2017-05-03 20:51:32 · 2290 阅读 · 3 评论 -
Android自定义View(四) -- Canvas
前面学习的内容: Android自定义View(一) – 初识 Android自定义View(二) – Paint详解 Android自定义View(三) – drawText() 今天继续学习Android自定义View第四篇内容Canvas。本文计划根据HenCoder系列文章进行学习,所以代码风格及博文素材可能会摘自其中。1 范围裁切范围裁切有两个方法:原创 2018-01-30 19:09:09 · 348 阅读 · 0 评论 -
Android自定义View(五) -- 绘制顺序
前面学习的内容: Android自定义View(一) – 初识 Android自定义View(二) – Paint详解 Android自定义View(三) – drawText() Android自定义View(四) – Canvas 今天继续学习Android自定义View第五篇内容绘制顺序。本文计划根据HenCoder系列文章进行学习,所以代码风格及博文素材可能会摘自其中原创 2018-01-31 21:05:27 · 892 阅读 · 0 评论 -
数据库语句 select * from table where 1=1 的疑惑解答(转)
对于数据库查询语句 select * from table where 1=1的疑惑一直理解不够清晰。终于发现一篇文章解释的特别详细我们先来看看这个语句的结果:select * from table where 1=1,其中where 1=1,由于1=1永远是成立的,返回TRUE,条件为真;所以,这条语句,就相当于select * from table,返回查询表中的所有数据。一、转载 2018-01-25 14:54:12 · 856 阅读 · 0 评论 -
Android studio 的快捷键 MAC 和Win版本(转)
功能描述 keymap对应名字 Mac Win/Linux 提示错误解决方案 Show Intention Actions option + enter alt + enter AS配置界面 Preferences command + , control+alt+S 工程项目配置界面 Project Structure comm转载 2018-01-19 11:50:16 · 2493 阅读 · 0 评论 -
Kotlin 学习笔记(一)—— 概述、学习曲线、开发工具、参考资料
Kotlin学习笔记系列教程 Kotlin 学习笔记(一)—— 概述、学习曲线、开发工具、参考资料1. Kotlin 概述简介Kotlin 是一门支持多范式、多平台的现代静态编程语言。Kotlin 支持面向对象、泛型与函数式等编程范式,它支持 JVM、Android、JavaScript 目标平台,而原生(Native)平台的 Kotlin 几天前也发布了 0.2...原创 2018-02-08 20:44:18 · 1115 阅读 · 0 评论 -
git 合并代码之--merge、rebase
git最常用方法之一,合并代码,大部分时候我们都是使用merge命令。还有一个很少用的rebase命令。 对于两种方式的差异,一直不太了解,所以今天来仔细看看1.相同点虽然git合并代码有merge和rebase两种方式,但是两种合并方式的最终结果是一样的,没有任何区别。既然整合结果没有区别,那么区别在哪了?那就是合并过程。2.不同点以两个分支为例,主分支master,新原创 2018-02-01 14:58:15 · 1079 阅读 · 0 评论 -
Android自定义View(一) -初识
前言:公司近来业务调整,学习iOS开发有段时间,第一个iOS项目正在被库克百般蹂躏,审核一直进行中。 通过iOS和Android开发的对比,能体会到两种开发中不同的理念,例如iOS系统控件及动画,自带绚丽流程效果,这让Android开发人员欣羡不已。 在当前很多公司,iOS和Android共用同一套设计图的情况下,iOS中很多系统控件可以实现的效果,在Android都需要开发者自己去实现,原创 2018-01-22 18:05:01 · 701 阅读 · 1 评论 -
Android自定义View(三) -- drawText()
前面学习了 Android自定义View(一) – 初识 Android自定义View(二) – Paint详解今天继续学习第三篇内容drawText(),本文是对第二篇文章中drawText的拓展,进行详细学习本文计划根据HenCoder系列文章进行学习,所以代码风格及博文素材可能会摘自其中。1.Canvas 绘制文字的方式Canvas 的文字绘制方法有三个:原创 2018-01-30 15:20:50 · 1261 阅读 · 0 评论 -
Android自定义View(六) -- 属性动画(上)
前面学习的内容: Android自定义View(一) – 初识 Android自定义View(二) – Paint详解 Android自定义View(三) – drawText() Android自定义View(四) – Canvas Android自定义View(五) – 绘制顺序今天继续学习Android自定义View第六篇内容 属性动画(上)本文计划根据HenCod原创 2018-02-07 20:05:57 · 524 阅读 · 0 评论 -
Android自定义View(八) -- 硬件加速
Android自定义View(八) – 硬件加速前面学习的内容: Android自定义View(一) – 初识 Android自定义View(二) – Paint详解 Android自定义View(三) – drawText() Android自定义View(四) – Canvas Android自定义View(五) – 绘制顺序 Android自定义View(六) – 属性动画(原创 2018-02-07 20:43:13 · 666 阅读 · 0 评论 -
Kotlin学习笔记(一)---从零学习Kotlin
关于KotlinAndroid开发目前火到不行的语言,17年IO大会推出Android官方开发语言,相信每个人都或多或少有了解,关于Kotlin的起源以及作用,不用再阐述,已经有有心人整理好了Kotlin官网中Android部分Kotlin中文网站Android遇上Kotlin | 第一部分第一课 : Kotlin若只如初见Kotlin 资源大全 - 学 Kotlin 看这一篇教程就够了有原创 2017-06-23 17:51:49 · 1423 阅读 · 0 评论