- 博客(60)
- 资源 (18)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 屏幕适配的前世今生
内容参考博客地址: http://blog.csdn.net/jdsjlzx/article/details/45891551 http://blog.csdn.net/lmj623565791/article/details/49990941 本篇文章主要总结一下开发中的一些屏幕适配的方案,对于一些概念性的知识就略过了;1.屏幕适配基础篇布局文件中使用match_parent、wrap_co
2017-02-16 19:15:48
1139
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 安卓性能优化—内存优化
在Java中,内存的分配是由程序完成的,而内存的释放是由垃圾收集器(Garbage Collection,GC)完成的,程序员不需要通过调用函数来释放内存,但也随之带来了内存泄漏的可能,本篇博客,我将介绍内存优化的相关知识。java的内存区域大致分为堆(Heap),栈(Stacks)、方法区(MethodArea);堆(Heap):主要存放new出来的对象以及对象中所有的成员变量和数组,在堆中分配
2017-02-16 15:56:17
1206
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 安卓开发-填坑之路
今天开始把遇到的坑记录在博客中,以后开发遇到了也就easy啦 ……1. 实体类使用Parcelable序列化可能遇到的问题 class not found when unmarshalling 实例化集合:out.writeList(genre);genre = new ArrayList<GoodsCountGenreBean>(); in.readList(genre,
2016-12-11 16:29:00
727
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 多渠道打包
概述 一个app我们可能会在不同的应用市场发布,如果一个一个打包,岂不是很慢,下面就跟我来一步一步实现多渠道打包吧,以友盟多渠道打包为例子; 1.基本配置 添加依赖:compile 'com.android.support:appcompat-v7:24.2.1'在清单文件中配置友盟meta-data以及添加权限<uses-permission android:name="android.pe
2016-12-11 13:00:32
632
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 代码混淆后可能出现的问题
1、ClassNotFoundException,NoSuchMethodError 原因:这种异常会在好多情况下出现,比如:本地代码通过反射调用其他的类,但是经过了混淆之后,就会出现如上异常;调用了JNI之后,C或者C++和java代码进行交互的时候找不到java的类或者方法,导致发生了异常……等等,还有好多。 解决办法:只需要将被调用的java类标注为不混淆即
2016-12-05 09:35:12
6707
原创 kotlin教程
Kotlin想必大家都知道了,网上的介绍也非常多,这里我把我写的kotlin学习demo和一个开源项目给大家,希望对大家有所帮助demo教程 小项目中文版官方文档 :https://www.kotlincn.net/docs/reference/ 英文版官方文档:https://kotlinlang.org/docs/reference/ 参考文章:https://github.co
2018-02-03 17:41:32
245
原创 Kotlin开发中的碰到的一些坑(持续更新)
1、当实现接口的方法时,记得把TODO(“not implemented”)注释掉,不然会抛出An operation is not implemented: not implemented异常
2018-02-02 11:49:04
983
原创 安卓优化之apk瘦身(27.7M-->17.5M)
概述apk瘦身作为优化的一部分,它的大小决定安装的时间与占用的内存,进行针对性的瘦身也能够提高用户体验,下面就看我怎样将一个27.7M的安装包减肥到17.5M,足足减少了37.18%。一、优化图片图片占用了大部分体积,所以图片的优化首当其冲。我使用的是TinyPng在线压缩工具,压缩前主要图片的大小(10.5M):接下来我使用iSparta软件将一部分图片转为web格式,.9图片我转出来后as报错,
2017-12-21 15:07:24
1498
原创 安卓热修复—阿里Sophix
一、概述随着技术的高速发展与创新,热修复如雨后春笋般涌现,如美团的Robust、饿了么的Amigo、微信的Tinker以及阿里的Andfix和Sophix。站在巨人的肩膀上,可以让我们视野更加开阔,现在就跟随我一起集成阿里的Sophix吧! 滴滴滴,开车啦……二、热修复方案对比可以看出阿里的这款热修复产品不仅支持的替换类型全面,而且接入灰常easy,小伙伴们有木有很激动啊,之前集成过微信的Tin
2017-12-20 13:43:44
1715
原创 常用网络开源库的特点与简单用法
今天来总结一下常用网络开源库的特点与简单用法。AsyncHttp Asynchttp 基于Apache HttpClient库;特点: 1.异步网络请求,在匿名回调中处理响应,使用简单 2.使用线程池来管理并发的网络请求 3.永久的cookie保存,内部实现用的是Android的SharedPreferences 4.库很小,所有的
2017-03-10 16:45:36
1103
原创 安卓复习之旅—使用NDK进行JNI编程
jni编程是进阶必不可少的技能,今天就一起回顾一下使用NDK进行jni编程的步骤:step1.下载配置NDK具体怎么配置我就不啰嗦了,提供一个下载地址:http://pan.baidu.com/s/1mhMX70Ostep2.声明native方法新建一个类,声明native方法:/** * 声明native方法 */public class JniTest { static {
2017-03-02 21:39:38
818
转载 下载文件新姿势
转自:http://blog.csdn.net/u012209506/相信大多数下载文件都是通过service来后台下载的,今天给大家分享一下使用系统自带DownloadManager来完成下载;DownloadManager的详解请移步http://blog.csdn.net/u012209506/; 这里对DownloadManager进行了封装,加入了运行时权限: 效果图如下: 源码传
2017-02-27 17:25:16
1323
原创 安卓复习之旅—Activity的启动流程
在日常开发中我们经常从一个Activity跳转到另一个Activity,调用的代码无非有以下两种:startActivity(intent);startActivityForResult(intent, requestCode);其实startActivity()最终也会调用startActivityForResult()来实现界面的跳转,下面我们就从startActivityForResult(
2017-02-24 16:48:29
579
原创 安卓复习之旅—View的工作流程2
上一偏文章主要了解了一下ViewRoot和DecorView 以及MeasureSpec ,这篇文章主要讲解View的三大流程;measure过程 measure过程要分两种情况,一种是普通view,一种是viewgroup:1.view的measure view的measure方法是一个final类型的方法,意味着不能重写这个方法,在这个方法中调用了onMeasure方法,我们可以重写onM
2017-02-23 16:15:59
492
原创 安卓复习之旅—View的工作流程1
本篇文章主要是回顾一下安卓中view的工作原流程,view的工作流程主要包含measure、layout和draw三大流程,在进入主题之前,先要理解一下几个概念,以便更好的理解view的三大流程;了解ViewRoot和DecorView ViewRoot对应ViewRootImpl类,实现了ViewParent接口,它是连接WindowManager和DecorView的桥梁,WindowMana
2017-02-23 14:39:03
807
原创 安卓复习之旅—Binder工作机制
Binder是Android中的一个类,实现了IBinder接口。从IPC角度Binder是Android中的一种跨进程通信方式;从Android framework角度来说,Binder是servicemanager连接各种manager(activitymanager、windowmanager…)的桥梁;从Android应用层来说,Binder是客户端和服务器进行通信的媒介,当bindserv
2017-02-18 14:53:30
1026
原创 安卓复习之旅——消息机制
概述 安卓的消息机制主要是指handler的运行机制以及handler所附带的messageQueue和looper的工作过程,之所以会出现handler主要是因为安卓不允许非UI线程进行UI操作,这个在viewrootimpl中的checkThread()方法中进行了验证:void checkThread() { if (mThread != Thread.currentThre
2017-02-17 17:33:59
675
原创 安卓性能优化—绘制优化
绘制优化指view的onDraw方法要避免执行大量的操作,这主要体现在以下几个方面:1.减少对象创建onDraw中要尽量减少局部对象的创建,因为onDraw方法可能会被频繁的调用,这样就会在一瞬间产生大量的临时对象,这不仅占用过多内存而且会导致频繁的gc,降低了程序的执行效率;2.杜绝耗时操作在onDraw中不要执行耗时操作,也不能执行成千上万次的循环操作,尽管每次循环都很轻量级,但是大量的循环也是
2017-02-16 11:14:42
594
原创 安卓性能优化—布局优化
性能优化是开发中必不可少的,大概可以从内存、布局以及app启动时间等方面进行优化,本篇文章介绍一些布局优化的方法;1、合理选择布局 新建activity时,默认的布局是RelativeLayout ,WHY?看看谷歌官方的介绍https://developer.android.google.cn/guide/topics/ui/layout/relative.htmlA RelativeLayou
2017-02-15 23:33:27
802
原创 安卓使用https进行网络访问
今天最后一天上班,马上就放假了,是不是有点小激动啊!这个假期准备阅读一下第二行代码,额…扯远了,let us back: 前两天写了关于https的工作流程以及如何使用keytool生成密钥并保存到cer文件中,今天学习一下怎样使用https进行网络访问。基本设置 这里我们使用安卓原生的HttpURLConnection进行网络请求,使用我的csdn博客地址模拟http请求,github地址模拟
2017-01-15 11:15:51
4660
原创 使用keytool生成密钥
上一篇文章我们了解到https的工作流程,今天我们来学一下怎样用keytool进行密钥的生成,下一篇学习怎样使用https。密钥基本信息 先看一下密钥的一些基本信息: 生成密钥//生成密钥keytool -genkey -v -alias tang -keyalg RSA -keypass 123456 -storepass 123456 -keystore D:/workspace/MyHt
2017-01-14 17:42:25
3278
原创 初探HTTPS协议
概述HTTP协议属于明文传输协议,交互过程以及数据传输都没有进行过加密,通信双方也没有进行身份验证,通信过程非常容易遭到劫持,篡改等安全问题,为了提高网络传输的安全性,HTTPS应运而生.相比HTTP,HTTPS提供了以下三个特性:数据完整性:内容传输经过完整性校验数据隐私性:内容经过对称加密,每个连接生成一个唯一的加密密钥身份认证:第三方无法伪造服务端(客户端)身份然而HTTPS的工作流程
2017-01-13 19:37:44
582
原创 安卓性能优化—使用ArrayMap与SparseArray
性能优化是我们做开发的必须要熟练掌握的技能,所以我打算写一个性能优化专题,把平时用到的一些优化方法记录下来,以便忘记的时候可以快速查找,同时也给给其他开发者提供微薄之力吧:这篇文章讲述的是在一些特定的场景使用使用ArrayMap与SparseArray代替HashMap,提高对数据的操作; 先看看官方文档的描述:ArrayMap is a generic key->value mapping da
2017-01-07 21:06:00
2802
2
原创 安卓复习之旅—单例模式
单例模式是开发中最常用的一种模式,sharedPreference基本上是最常用的一种,下面就来看看单例模式的几种定义方式:1、饿汉式单例类 饿汉式单例类是Java语言里最容易实现的单例类:public class EagerSingleton { private static final EagerSingleton instance = new EagerSingleton();
2017-01-02 16:26:25
319
原创 安卓复习之旅—工厂模式(三)
前面我们复习了工厂模式中的简单工厂模式与工厂方法模式,这次就来复习一下工厂模式中的最后一个成员—抽象工厂模式。 工厂方法模式中,我们是把工厂抽象出来了,而抽象工厂模式是在此基础上把产品抽象出来,结构如下图: 理论知识就不多说了,直接上代码,还是以水果为例子,现在的需求是引进了大鹏种植技术,需要在大棚里种植热带与亚热带的水果,蔬菜; 定义产品接口 分为水果和蔬菜两种水果/** * 水
2017-01-02 11:37:45
367
原创 安卓复习之旅—工厂模式(二)
上一篇博客说到简单的工厂模式不适合层级多的产品,我们需要用到工厂模式中的工厂方法模式来完成,那什么是工厂方法模式呢,跟着我一步一步认识它吧; 工厂方法模式是定义一个创建产品对象的工厂接口,将时间实际创建工作推迟到子类中。 工厂方法模式的结构: 抽象接口(creator):工厂方法模式的核心,与应用程序无关的,任何模式中创建对象的工厂类必须实现这个接口。具体工厂(concretecreator)
2017-01-01 16:26:58
331
原创 安卓复习之旅—工厂模式(一)
今天来复习一下Java设计模式中的工厂模式,工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪个类。包含几下几种形态:简单工厂模式,又称静态工厂模式;工厂方法模式抽象化模式简单工厂模式 简单工厂模式是类的创建模式,根据传入的参数决定生产怎样的产品,结构如下: 简单工厂模式包含工厂角色、抽象产品角色和具体产品角色; 下面以一个水果的例子来说明简单工厂模式:首先设计水果的生命
2017-01-01 11:54:06
373
原创 安卓复习之旅—观察者模式
2016年最后一天,因公司性质,元旦继续上班,春节早一些放假,额…祝各位元旦快乐!!! 接下来复习一下Java的一些设计模式,今天先来看看观察者模式: 按照图谱一步一步来实现吧 step1定义被观察者接口/** * 定义被观察者接口 * * @author Administrator * */public interface IObservered { /**
2016-12-31 16:33:33
423
3
转载 Android的硬件加速及可能导致的问题
文章转自:http://blog.chenming.info/blog/2012/09/18/android-hardware-accel/ 问题 在Android 4.0的某些设备上,在View刷新时会出现花屏和屏幕上的某些View错位的现象。 经过调查后发现adb logcat中出现很多OpenGLRenderer: 0x501的错位:09-18 14:34:39.090: DEBUG/Op
2016-12-29 10:20:22
1093
转载 优化加载gif动画
文章转自:https://mp.weixin.qq.com/s?__biz=MzA3NjA3NTI5Mg==&mid=2656329608&idx=1&sn=9b26e25828112101bd898a521920f998&chksm=84c627fbb3b1aeedc76d711df000a230f8122f920e7eaac8e4ac2beca0502219f2b53e45c6b4&mpshar
2016-12-26 15:52:47
2310
原创 安卓复习之旅—自定义view(二)
今天来看一下继承自ViewGroup的自定义view;看看效果先: 有点像垂直方向的viewpager吧,下面来一步一步实现它吧。 step1声明需要的一些成员变量 // 屏幕高度 private int mScreenHeight; private int mScrollStart; private int mScrollEnd; // 移动时的Y距离
2016-12-25 16:16:43
304
原创 安卓复习之旅—自定义view(一)
今天开始复习一下自定义view相关的知识。 先上图看看效果吧: 额 好像奥运五环那几个字没有居中。。。先这样吧(嘿嘿)开始coding吧: step1定义需要自定义的属性 在res/values/文件夹创建一个attrs.xml文件,在里面编辑需要的自定义属性<?xml version="1.0" encoding="utf-8"?><resources> <attr name=
2016-12-24 15:34:47
306
原创 滑动字母定位listview的对应字母的item
效果图:自定义右侧sideBar获取焦点改变背景颜色. 显示有焦点的字母; 主要代码: /** * 重写这个方法 */ protected void onDraw(Canvas canvas) { super.onDraw(canvas); // 获取焦点改变背景颜色. int height = getHeig
2016-12-14 10:11:34
424
原创 集成tinker热更新
前段时间尝试了一下增量更新,以及hotfix,今天写了一个demo集成腾讯bugly的tinker热更新https://bugly.qq.com/v2/index; step1、添加依赖: 1. 工程中的dependencies依赖:// tinker gradle插件 classpath ('com.tencent.tinker:tinker-patch-gradle-plu
2016-12-12 15:23:08
1077
原创 谷歌postMan的安装步骤
话不多说直接走起: step1 使用谷歌浏览器,点击右上角选择设置—–>扩展程序–>获取更多扩展程序选项(需要翻墙): step2 在谷歌应用店搜索postman 选择添加到chrome step3 启动Postman开始你的接口测试吧 step4 可以创建快捷方式方便下次运行
2016-12-11 11:10:56
662
转载 安卓复习之旅—Matrix类的方法
转自:http://www.cnblogs.com/ZSS-Android/p/3930830.html 概述 在Android中,对图片的处理需要使用到Matrix类,Matrix是一个3 x 3的矩阵,他对图片的处理分为四个基本类型:1、Translate————平移变换2、Scale ————缩放变换3、Rotate ————旋转变换4、Skew ————错切变换1.
2016-12-10 11:46:35
465
转载 安卓复习之旅—Shader相关类的方法
转自:http://www.cnblogs.com/menlsh/archive/2012/12/09/2810372.html 在Android中,提供了Shader类专门用来渲染图像以及一些几何图形。 Shader类包括了5个直接子类,分别为:BitmapShader、ComposeShader、LinearGradient、RadialGradient以及SweepGradient。其中,B
2016-12-10 11:38:24
313
转载 安卓复习之旅—JavaGC机制
转自:http://inotgaoshou.iteye.com/blog/757470概述 因为在之前的内存优化 博客中已经提到了Java的内存区域,而垃圾回收是针对堆内存而言的,所以就把堆内存再深入的讲一下,然后再讲GC机制;堆内存模型 堆内存由垃圾回收器的自动内存管理系统回收,分为两大部分:新生代和老年代。老年代主要存放应用程序中生命周期长的存活对象。新生代又分为三个
2016-12-10 11:12:27
995
1
转载 ANDROID 秒级编译 FREELINE
转自http://stormzhang.com/2016/12/02/android-seconds-build-freeline/什么是 Freeline?Freeline 是蚂蚁金服旗下平台蚂蚁聚宝 Android 团队开发的一款针对 Android 平台的增量编译工具,它可以充分利用缓存文件,在几秒钟内迅速地对代码的改动进行编译并部署到设备上,有效地减少了日常开发中的大量重新编译与安装的耗时,
2016-12-09 17:54:11
646
原创 安卓复习之旅—raw和assets文件夹的作用,区别
二者所位于的位置 raw包含在res目录下 res/raw和assets的相同点两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制assets和res/raw工程目录下都可以放一些小于1M的文件(2.3版本以前要求,否则将不能读出数据。),这些文件将被打包到APK中应用使用。res/raw和assets的不同点res/raw中的文件会被映射到R.Java文件中,
2016-12-09 15:32:02
746
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人