- 博客(115)
- 收藏
- 关注
原创 面试集锦—Fragment中使用父Activity的属性和方法
getActivity()方式: 通过getActivity()获取父类的实例,并进行类换调用其方法,例如父类的Activity如果为ParentActivity,则代码如下:ParentActivity parentActivity = (ParentActivity ) getActivity(); parentActivity.function(); 2.
2017-02-13 13:41:26 2036
转载 Okhttp缓存配置
Okhttp是由Sqare公司开发的开源网络访问库,目前在Android和Java开发中有着广泛的应用。在Android开发中和Retrofit结合可以非常方便地调用网络接口。使用缓存可以让我们的app不用长时间地显示令人厌烦的加载圈,提高了用户体验,而且还节省了流量,在数据更新不是很频繁的地方使用缓存就非常有必要了。想要加入缓存不需要我们自己来实现,Okhttp已经内置了缓存,默
2017-02-10 09:30:39 803
原创 Android动画——属性动画(Property Animation)
Property Animation产生的背景: 由于Tween Animation(补间动画)只能实现简单的四种的动画(alpha、scale、rotate、translate),如果我们需要实现更复杂的动画就无法满足需求了,而且补间动画改变的不是View本身,而是改变的View对象绘制的位置,比如View形状的变换,如大小的缩放,透明度的改变,位置的改变,其实本身并没有改变,我们开发过程中的经常
2017-02-09 10:33:39 511
原创 Android动画——补间动画(Tween Animation)
补间动画是通过对View的内容进行一系列的图形变换 (包括平移、缩放、旋转、改变透明度)来实现动画效果。动画效果的定义可以采用XML或者编码来实现。 动画类型 XML配置方式 Java代码实现方式 渐变透明度动画效果 alpha AlphaAnimation 渐变尺寸缩放动画效果 scale ScaleAnimation 画面旋转动画效果 rotate
2017-02-08 18:03:04 458
原创 Android动画——逐帧动画(Frame Animation)
概念:为其他对象提供一种代理,以控制对这个对象的访问。 类比:火车票买票 类型:远程代理: 虚拟代理: 包含代理: 智能引用代理: 以智能代理为例: 静态代理:代理和被代理的对象在代理之前是确定的。他们都实现相同的接口或者继承相同的接口。
2017-02-08 17:21:52 704
原创 Gradle自定义BuildConfig
BuildConfig.DEBUG首先在Gradle脚本中默认的debug和release两种模式BuildCondig.DEBUG字段分别为true和false,而且不可更改。该字段编译后自动生成,在Studio中生成的目录在app/build/source/BuildConfig/Build Varients/package name/BuildConfig 文件下。我们以9G
2017-01-24 17:21:04 1029
原创 Java 责任链模式
定义:责任链模式是一种设计模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任,避免了请求发送者和接受者之间的耦合,但也同时降低了性能。代码中的Exception就是一个责任链模式。JavaScrp
2017-01-22 16:42:19 438
原创 Java 工厂模式
工厂模式概念:工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑使用工厂模式,虽然这样做,可能多做一些工
2017-01-22 14:59:17 415 1
原创 Java 单例模式
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。 举例:配置文件,工具类,线程池,缓存,日志对象等,如果创造了多个实例,就会导致许多问题,比如说占用过多资源,结果不一致等。 单例模式的结构图: 单例模式的种类: 一、懒汉式 (1)首先我们都知道一个类会有一个默认的构造方法,外界可以通过new对象调用默认构造方
2017-01-22 12:22:13 282
原创 Java 设计模式——总章
这个系列将系统的介绍每一个设计模式,首先来说说什么是设计模式。 定义:设计模式是一套被反复使用,多数人知晓的、经过分类编目的、代码设计经验的总结。 目的:使用设计模式是为了提高代码的重用性,让代码更容易的被他人理解、保证代码的可靠性。 设计模式的种类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外
2017-01-22 11:06:38 329
原创 Android 常用判断方法--不断补充
/** * 判断当前界面是否是桌面 */ private boolean isHome() { ActivityManager mActivityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); List<RunningTaskIn
2017-01-22 09:28:20 372
转载 Android进阶资源
1、国外教程网站Android Developers Blog不解释vogella很不错的网站,免费的,包含android的教程也比较全面,并且教程中经常引用大牛blog,会有很多意外发现。代码资源有提供,但是不是很好找。非常推荐tutorialspoint非常适合入门,提供基本所有的基础教程,并且N多的例子。除了
2017-01-20 15:40:12 310
转载 Android Studio Template
1、概述本篇文章首发于我的微信公众号,想看更多技术文章的朋友可以扫一扫本篇文章底部的二维码来关注我的微信公众号,每周都会3-5篇技术文章推送。上周在QQ群吹水的时候,发现数个QQ群被一张神奇的图刷屏了,大家纷纷表示对该图有极大的兴趣,该图如下:可以看到预设了非常多的Activity模板,可以方便的添加各种效果,极大的减少部分代码的编写,群里成员据说也积极联系该图了作
2017-01-19 14:25:47 492
转载 Google webp
什么是webp,使用webp有什么好处,请参考如下文章,非常赞。 https://isux.tencent.com/introduction-of-webp.html
2017-01-19 11:24:55 993 2
原创 Android网络库Android-Async-Http、Volley、Okhttp、Retrofit对比
下面图示将从网络库的实现、特点、、社区维护情况、接入成本、使用场景、性能分析等几个方面来分析当前比较火的几个网络库。
2017-01-18 12:16:09 1097
转载 GitHub前100的开源库,非常实用
本项目主要对目前 GitHub 上排名前 100 的 Android 开源库进行简单的介绍, 至于排名完全是根据GitHub搜索Java语言选择「Best Match」得到的结果,然后过滤了跟Android不相关的项目,所以排名并不具备任何官方效力,仅供参考学习,方便初学者快速了解当前一些流行的Android开源库。React Native 这个是 Facebook 在 React.js Co
2017-01-18 11:38:46 394
原创 Android网络库的前世今生四个阶段
前言网络请求模块在Android中应用十分广泛,可以说它起到举足轻重的作用,一个封装良好的网络请求模块会对app的体验和性能带来意想不到的效果。
2017-01-17 20:18:50 389
原创 Android 自定义WebView 原生接入及WebView JavascriptInterface
一WebView原生接入: Android webview继承自AbsoluteLayout,可以在其中放入一些子View,如下所示的布局文件:<TextView android:id="@+id/hello" android:layout_width="wrap_content" android:layout_height="wrap_conten
2017-01-17 18:05:25 2958
原创 Android Webview基础
Hybrid App(混合模式移动应用)是指介于web-app、native-app这两者之间的app,兼具“Native App良好用户交互体验的优势”和“Web App跨平台开发的优势”,鉴于现在App应用需要对市场快速响应的需求,在Native中嵌入Webview的页面越来越被广泛的使用。本系列文章将从webview的基础,webview的原生接入,webview jsbridge(本系列打算
2017-01-17 16:28:06 362
原创 App内存分析工具——LeakCanary
app的内存分析工具,一般是用来检测内存泄露,进而优化我们的代码,那么什么是内存泄露呢?当本该回收的内存由于某种原因没有被GC回收时,导致内存被无效数据使用而导致可用内存逐渐变小,内存泄露会导致内存消耗增加,大量的内存泄露就会最终导致OOM,通过ADB自带的工具,可以大概看出是否有内存泄露(例如meminfo不断增大),但是想要更进一步的分析内存,那就要亮剑了。这篇为大家介绍第一个工具:LeakCa
2017-01-16 20:29:52 341
原创 Android IDE&命令行打包
本系列希望系统的给大家讲解一下Android的多渠道打包知识,首先给大家讲解一下怎么打包一个普通的应用程序。 选择Generate Signed APK就是平常所说的签名包。点击之后Generate Signed APK进入下一个页面, 选择Creat new,添加keystore信息(keystore是java的密钥库、用来进行通信加密用的、比如数字签名。keystore就是用来保存密钥对
2017-01-16 12:41:06 412
转载 Atlas:手淘Native容器化框架和思考
在刚刚过去的云栖大会上,手淘宣布其移动容器化框架Atlas将于2017年年初开源,对这个框架,在过去团队对外部做过一些分享,外界也一直对其十分关注,到现在它终于即将开源了。本文将介绍Atlas的设计思路和手淘对容器化、组件化和动态化上的思考,主要内容来自阿里巴巴资深技术专家倪生华(玄黎)在云栖大会上的分享。Atlas是什么2013年,手淘航母战略的制定,带来了业务和开发人员
2017-01-14 23:18:42 1392
原创 Android多渠道打包详解
Android应用市场百花争艳,应用宝,baidu,小米,豌豆荚等等都是各自占据一方,为了对每个市场的应用下载以及该渠道市场上的一些行为(下单等)数据分析,所以Android要打出不同渠道的包,以方便APP客户端在API请求时带入渠道号区分不同的市场,然后做进一步的分析,指导产品或者市场以及其他方面的下一步决策,今天就和大家一起分享一下Android多渠道打包的几种方法,与大家共勉。 目前多渠道打
2017-01-14 23:13:17 399
原创 2016Android技术开发总结
今天2017年春晚的节目单已出,马上就可以回家了,心理有一种说不出来的喜悦,因为终于可以见到我最爱的人了了,爸爸妈妈儿子非常非常想念你们,真希望能够尽早稳定,在你们还没有年迈的时候,可以每天陪伴在你们身边,享受最美好的时光。 毕业多年,无数优秀的博客陪伴我度过了每一次前进征程中的小波折,进入2016我发觉我也应该用博客记录下来我的工作过程,把自己知道的东西也和大家一起来分享,所以我打算把Andro
2017-01-13 23:17:08 595
原创 Android分享SDK模块化-------微信分享基础篇
接入一个第三方的SDK,首选需要登录第三方的官方平台,下面是微信的官方地址:https://open.weixin.qq.com/cgi-bin/index?t=home/index&lang=zh_CN,接入微信SDK一般分为如下步骤, 1.首先你需要在微信开放平台注册一个开发者账号并申请你的AppID,然后到开发者应用登记页面进行登记,登记并选择移动应用进行设置后,将该应用提交审核,只有审核通
2017-01-13 20:29:33 1642
原创 Android App文件结构分析
Android的APP是一个以*.apk结尾的压缩文件,将其后缀修改为.zip可以看到apk包的完整结构如下图: 主要包括Java 代码文件:classes*.dex,Native 代码文件:lib目录下面的 .so 文件,资源文件:包括 assets 目录、res 目录以及 resources.arsc 索引表文件。 我们从上到下依次的详细说明: (1)AndroidManifest.
2017-01-13 20:27:11 7217
原创 Android性能优化典范——GPU渲染(Profile GPU Rendering)
打开手机里面的开发者选项,选择Profile GPU Rendering,如下图所示: 随着界面的刷新,界面上会滚动显示垂直的柱状图来表示每帧画面所需要渲染的时间,柱状图越高表示花费的渲染时间越长。绿色的线代表16ms,我们需要确保每一帧花费的总时间都低于这条横线,这样才能够避免出现卡顿的问题。 每一条柱状线都包含三部分: (1)蓝色部分表示绘制时间或者在Java层创建和更新displ
2017-01-13 20:17:11 5631
原创 Android性能优化典范——通晓过度绘制(Understanding Overdraw)
Overdraw(过度绘制)描述的是屏幕上的某个像素在同一帧的时间内被绘制了多次。在多层次的UI结构里面,如果不可见的UI也在做绘制的操作,这就会导致某些像素区域被绘制了多次。这就浪费大量的CPU以及GPU资源。比如说,一个TextView后有背景,那么显示文本的像素至少绘了两次,一次是背景,一次是文本,这就好比你在墙壁上先后涂了两次颜色涂料,甚至后期又贴了墙纸,前面的工作其实就没有什么意义了,而且
2017-01-13 19:43:00 378
原创 Android性能优化典范——渲染性能(Render Performance)
从设计师的角度,他们希望App能够有更多的动画,图片等时尚元素来实现流畅的用户体验。从用户的角度,他们希望App能够在操作中入Dove般丝滑,然而有些App或者其中的某些页面(比如列表页),或者那些需要复杂的渲染操作的界面。会在操作的过程中产生Android系统无法及时完成这些复杂的操作,因此而产生卡顿等性能问题,这些问题的产生主要根源都是因为渲染性能。 12fps大概类似手动快速翻动书籍的帧率,
2017-01-13 16:40:05 932
原创 Android性能优化典范——总纲
Google已经发布了关于Android性能优化典范的六篇专题,这些专题旨在帮助开发者创建更快更优秀的Android App。其中第一篇发布于2015年伊始, 一共16个短视频,每个3-5分钟。课程专题不仅仅介绍了Android系统中有关性能问题的底层工作原理,同时也介绍了如何通过工具来找出性能问题以及提升性能的建议。主要从三个 方面展开,Android的渲染机制,内存与GC,电量优化。第二篇一共2
2017-01-13 15:17:24 423
原创 Android内存详解——内存使用情况
Process Stats: Android 4.4 KitKat 提出了一个新系统服务,叫做procstats。它将帮助你更好的理解你app在后台(background)时的内存使用情况。Procstats可以去监视你app在一段时间的行为,包括在后台运行了多久,并在此段时间使用了多少内存。从而帮助你快速的找到应用中不效率和不规范的地方去避免影响其performs,尤其是在低内存的设备上运行时。D
2017-01-13 11:51:58 4676
原创 魅族手机webview title获取不到
在APP中Hybird模式开发下,我们经常隐藏H5的头,而外壳使用APP的头做整个页面的跳转控制,例如左侧的统一返回或者定制化返回,页面头的展示,右侧各种不同业务下的ICON和事件等,例如下图: 这样做会有很多的好处,后续分享webview的组件时会介绍,此时如果进入了多级的webview页面后,会出现当按系统返回键回退到上一个页面时,魅族手机会存在不调用WebChromeClient 的on
2017-01-12 15:50:49 1501
原创 获取手机的机型和运营商
对于特殊机型的问题,经常会遇到对当前的APP所在手机做运营商(华为,三星,小米,魅族等)和机型的判断,主要是通过如下两个系统的方法判断。更多信息也是通过类似的方式获取,此处只是给个思路,网上的参考很多,但是有些解释容易误解。private String getCurrentOS(){ return android.os.Build.BRAND; }private String
2017-01-12 15:35:24 1065
原创 Android初始内存
随着硬件技术的发展,手机的内存越来越大。内存是手机系统中非常重要而且稀缺的资源,做为一个Android的开发人员,我们不能因为存在的增大因此而随意的使用内存,把握好每一块内存,才能让APP的性能达到最优。通常对于内存的管理和优化有以下两种核心原则: (1)在对象不需要的时候确保能够销毁。 (2)如果对象没有被销毁,则该对象一定是作为可以复用的对象,而不是存在多个。 内存分类: (1)寄存器R
2017-01-11 20:30:02 659
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人