- 博客(297)
- 资源 (8)
- 收藏
- 关注
原创 使用Fragment完成Tab选项卡-Android Fragment应用实战
先看一下QQ、新浪微博、支付宝钱包这三个非常有名的应用,都有一个底部导航栏,我们一般称之‘选项卡’。google官方会叫他们为fixed tab,不过国内好像很好这么叫的。其实,在anroid 4.x时代,google官方更希望应用的导航放在顶部,通过滑屏和点击标签来切换界面。但是随着ios的的跟风以及用户习惯的养成,这种设计风格的形成也就变成历史遗留问题。在这里我们不讨论哪一个风格好,哪
2013-11-24 01:43:23 57793 31
原创 仿美图秀秀的图片剪切
先贴上美图秀秀原作的效果图,右边是我仿的效果图。刚一眼打量过去,吸引我们的就是那四个大点。就从它开始吧,目前看来这个大点是一个图片,当点击下去的时候有加亮的效果,可能这又是一张图片。我们先不要考虑这些,先把它当做一个普通的Point来处理就好了。正常来讲的话,我们这里需要四个Point,但是考虑到后面我们对这些点进行复杂的运算和事件处理,只要申请两个Point就好了,以便降低问题的复杂度。
2012-07-29 03:56:20 6992 6
原创 怎么样编写地道的Kotlin代码
今天我打算谈论一下怎么编写地道的(Idimo)Kotlin代码,『地道』意思就符合Kotlin代码的习惯。我今天要讲的是如何摆脱Java编码习惯,开启你的Kotlin的编码风格。
2021-12-09 10:06:46 1234
原创 走进微软亚洲研究院随笔
——说起微软,应该是我最早了解科技公司。大约我是在上初二的时候(也就是2005年)买了人生第一个台式Window系统电脑,后来的日子里我就开始学习和研究它,发现很多神奇有用的功能,慢慢的电脑和Window系统成为了我生活的一部分。——时隔N年之后,有一个偶尔的机会通过CSDN官方组织的活动,来微软亚洲研究院参观,我很是兴奋,毫不犹豫的报名参加了。这个是2021年11月24号中在北京中关村微软大厦拍摄的这是非要和我一起过来的『甜甜』这个微软公关部的Leader和CSDN的VP给大家介绍今天的日程
2021-11-28 12:15:07 4080 4
原创 Android的开发文档规范
Android的开发文档规范我们项目的代码时间时间很长,经过太多人手,代码的规范性堪忧,目前存在较多的比较自由的「代码规范」,这非常不利于项目的维护,代码可读性也不够高。分析现有项目的代码的情况,输出的『定制化规范』文档,用于提高代码的可读性和可维护性。目的对于个人:帮助团队写「正确」的代码,提升编程能力。团队内部:统一项目的编码风格,降低维护『非自己模块』的成本对外部门:交付更加稳定的产品,并降低后期的维护难度准备及通用开发工具配置规范工欲善其事,必先利其器。推荐使用最新的稳定版
2021-03-08 19:25:59 959
原创 LoadedApk Crash的探索之路
LoadedApk Crash的探索之路Bug成因分析,问题定位Crash 现场起因是:在工作中遇到两个奔溃堆栈日志,如下图:初步分析这个Crash发生在第三方SDK中,是由SDK内部触发,不是通过直接调用产生的,并且难以复现。本来这个问题应该由SDK提供方来解决,但是用户不管这些,需要我们APP自己来解决。我在华为手机上也遇到这个问题了,没有页面发生奔溃,但是也没有从根本上避免...
2019-10-13 17:50:39 886
原创 layout_scrollFlags属性不完全解析及总结
layout_scrollFlags属性不完全解析及总结0.前言分析源码com.android.support:design:27.1.1库的android.support.design.widget.AppBarLayout.java现在只是简单分析向下滑动的情况,当dy为负数。这里的min和max就是通过setTopAndBottomOffset方法对AppBarLayout的滑动范围进...
2019-08-03 13:08:03 2054
原创 小试牛刀RxJava2之首页检查
前言当我第一次听说RxJava是在2015年的11月,掐指一算距今过去了N年多了,现在RxJava2都发布好久了。现在公司项目的的业务需要,有一块逻辑涉及到子线程和主线程的来回切换。如果使用传统的Thread+Handler的写法,写出来的代码就跳来跳去,还有可能出现多次嵌套。很利于阅读理解里面的逻辑和后期的维护开发。早就听说RxJava的大名,通过响应式编程很好的处理异步问题。这次正好有这个机...
2019-07-13 17:52:18 282
原创 无侵入进行SDK的初始化
无侵入进行SDK的初始化0.前言我们在集成第三方SDK的时候大多都会在Application的onCreate方法里进行SDK的初始化或配置工作,这好像也没有什么问题,不过我们能不能能做的更好一点呢?就是希望用户在gradle文件里compile一下相应的库就可以直接使用,不需要额外的初始化和配置.这个问题,我在阅读Android Architecture Components
2017-07-01 09:29:31 5294 4
原创 还有一鲜为人知的单例写法-ThreadLocal
还有一鲜为人知的单例写法-ThreadLocal源码范例当我阅读FocusFinder和Choreographer的时候,我发现这两类的单例实现和我们平常用双重检查锁很不一样。而是用来一个ThreadLocal,这个也可以实现单例啊,那这个与双重检查锁实现的单例有什么区别呢?
2017-04-01 18:46:47 6680 3
原创 Activity has leaked window that was originally added
Activity has leaked window that was originally added问题日志相信很多同学都遇到过这个问题window leak。日志如下E: android.view.WindowLeaked: Activity me.zhangls.rxjava2sampledemo.MainActivity has leaked window com.android.inte
2017-03-03 10:10:04 4431
原创 android.app.Dialog(23)里window的那些事(坑)
不要使用theme去配置Dialog的gravity由于现在手机的尺寸比较大(相对于智能机开始的3.5in、4.0in),而Dialog默认都是显示在屏幕中心的位置,用户触摸起来多不便。所以大多数产品都会要求Dialog在底部显示。所以你可能这样写: <style name="BottomDialog" parent="@android:style/Theme.Dialog">
2017-02-03 10:09:02 6564 2
原创 小试牛刀RxJava2之首页检查
前言当我第一次听说RxJava是在2015年的11月,掐指一算距今过去了1年多了,现在RxJava2都发布了。现在公司项目的的业务需要,有一块逻辑涉及到子线程和主线程的来回切换。如果使用传统的Thread+Handler的写法,写出来的代码就跳来跳去,还有可能出现多次嵌套。很利于阅读理解里面的逻辑和后期的维护开发。早就听说RxJava的大名,通过响应式编程很好的处理异步问题。这次正好有这个机会,自己
2017-01-14 19:12:58 1772
原创 如何监控项目里所有UI线程的操作(实战,BlockCanary)?
如何监控项目里所有UI线程的操作(实战,BlockCanary)?背景我们都知道,Android系统是线程安全的,也就是只有主线才能更新UI。而保持界面的流畅性,就要求界面1秒钟刷新60次以上。也就是16ms需要刷新一次界面。但是在实际开发过程中,有各种各样的原因,无法达到这一指标。尤其是当项目已经成形,需求的不断变更,开发人员的变更、替换,等等,就变成的更为困难。
2016-07-08 11:27:24 4594 4
原创 Activity及Fragment之间的跳转
直接跳转基本使用方法public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(
2016-05-09 16:53:14 3842
原创 Gson使用总结
参考(不限于):http://www.jianshu.com/p/e740196225a41.使用@SerializedName,处理客户端与服务端字段明命名不一致@SerializedName(value = "emailAddress", alternate = {"email", "email_address"})public String emailAddress;2.使用TypeToke
2016-04-07 15:06:48 3088
原创 手把手教你使用gradle mulchannel插件,进行多渠道打包
手把手教你使用gradle mulchannel插件,进行多渠道打包开头声明: 这个多渠道打包插件,是使用命令行来运行的。不依赖任何IDE的,你的开发环境是Eclipse还有Android Studio都是可以的。不需要APK的源代码,仅仅需要一个打包好的APK就可以。(一般是正式版本的并且已经签名和混淆的APK文件)。速度大约是:Rate = 10apk/20sec(300apk/10min)
2016-01-04 19:29:18 2279
原创 Volley异常的介绍
异常种类(VolleyError)ServerError的情况1.entitiy为空InputStream in = entity.getContent(); if (in == null) { throw new ServerError(); }2.返回5xx// TODO: Only throw ServerError for 5xx status codes. throw ne
2015-12-20 17:38:44 2198
原创 下拉刷新及相关框架
下拉刷新及相关框架1.基于ViewGroup的PtrFrameLayout项目地址:https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh问题:PtrDefaultHandler.checkContentCanBePulledDown(frame, content, header)实现问题 2. 竞品: https://githu
2015-10-31 17:21:06 2875
原创 Android Universal Image Loader
问题:在onCreate调用uil的displayImage,手动刷新时再次调用displayImage,会出现图片闪烁现象。问题分析:第二次displayImage,是从disk加载的,首先显示正在加载中的图片,然后在显示真正的图片,由于disk读取bitmap也需要一点时间,但是很快,所以会出现一闪而过的现象。根本原因:见uil源码,由这段源码可知memoryCacheKey的生成与image
2015-09-29 16:13:38 1815
原创 android的消息处理机制(图+源码分析)——Thread,Looper,MessageQueue,Message,Handler之间的关系
原文参考:http://www.cnblogs.com/codingmyworld/archive/2011/09/12/2174255.html 先看一段非常经典的代码,我们从会这里入手,慢慢分析源码去找这五个类的相互关系,以及消息封装,消息入队,消息出队,消息处理整个过程。
2014-02-28 20:17:18 3055
原创 自总结的Android Studio快捷键大全
File(文件)Alt+Insert 新建Ctrl+Alt+S 设置Ctrl+Alt+Shift 项目结构Edit(编辑)Ctrl+Z 取消这步Ctrl+Shift+Z 重做这步Ctrl+X 剪切Ctrl+C 复制Ctrl+Shift+C 复制文件路径Ctrl+Alt+Shift+C 复制引用Ctrl+V 粘贴Ctrl+Shift+V
2013-10-25 23:37:35 3769 2
原创 从Eclipse到Android Studio经历
现在不得不要和相处近两年的Eclipse分手了,很舍不得,谢谢你这些日子有你的陪伴,每天都会有些的期待和挑战。两年来,我们建立了很深厚的情感。曾经以为我的世界只能有你,而现在我的心里可能有了别人。起初我是不死活不同意的,但是碍于Google的压力,还有众人的舆论。使我不得不陷入思考和新的尝试。早在今年5、6月分份,Google就和我提过Android Studio,说她怎么怎么的好,怎么怎么的
2013-10-13 01:45:50 2955 4
原创 利用自定义泛型,自己简单实现HashMap
泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。(来自百度百科)实现步骤1.首先HashMap表面保存的是Key和Value,但是实际上保存的是一个个的Entry,而Entry里面是Key和Valuepublic class MyEntry
2013-04-24 00:25:34 4468
原创 使用listener显示在线人员的姓名
显示在线人员的思线1.服务器一启动就创建一个List名字叫onlinePersion,放在application中 (监听application)public class MyApplicationListener implements ServletContextListener { public void contextDestroyed(ServletConte
2013-04-23 00:22:13 1918
原创 模拟售票,学习多线程
假设有火车票100张,创建10个线程模拟10个售票点,每个售票点随机生成时间卖一张票。 打印出售票过程,注意使用synchronized确保同一张票只能卖出一次。import java.text.SimpleDateFormat;import java.util.Date;public class Resource { int ticketNum; boolean flag = f
2013-04-21 23:51:12 2541 2
原创 android 动态获取ID通过Resources的 getIdentifier 方法
public int getIdentifier(String name,String defType,String defPackage)Added in API level 1Return a resource identifier for the given resource name. A fully qualified resource nam
2013-04-12 21:47:19 2054
翻译 Service类
Service类简介: 一个Service是一个应用组件代表一个应用想要在不和用户交互的前提,去执行一个很长时间的操作。或者是提供功能给其他的应用去使用。每一个Service类必需有一个相符合的声明在它自己的包AndroidManifest.xml中。Service能够开始执行通过Context.startService()和Context.bindService(). 注
2013-03-31 15:05:21 4091
原创 sqlite插入速度优化方案
先贴上SQLiteOpenHelper的代码,我们创建测试的表是user,它有四个字段id,name,age,height,remark,测试用的小米2,默认条数为100行。//MySQliteOpenHelper作为一个访问SQLite的帮助类,提供两方面的功能//1.getReadableDatabase(),getWritableDatabase()可以获得SQLiteData
2013-03-30 21:24:26 4713
原创 SQLite实例入门
SQLite简介:Google为Andriod的较大的数据处理提供了SQLite,他在数据存储、管理、维护等各方面都相当出色,功能也非常的强大。SQLite具备下列特点: 1.轻量级 使用 SQLite 只需要带一个动态库,就可以享受它的全部功能,而且那个动态库的尺寸想当小。 2.独立性 SQLite 数据库的核心引擎不需要依赖第三方软件,也不需要所谓的“安装”。
2013-03-30 18:39:40 1586
原创 自己实现第一个ContentProvider
一、概念及说明ContentProvider定义:内容提供者是一个android应用的基础模块,提供内容给这个应用,它们封装数据和提供它给应用通过这个ContentResolver接口,使用ContentProvider可以在不同的应用程序之间共享数据,android为常见的一些数据提供了ContentProvider(视频、音频),ContentProvider使用表的形式来组织数据
2013-03-30 10:31:20 1347
原创 CSS(级联样式表)概要
CSS的作用给HTML中的内容像word一样来排版。的相同点和不同点?相同点:都是给网页的内容划分不同的区域不同点:div换行,span不换行id name class 所有标签有这个三属性,这三个属性都是给标称起名字的。一般来说,form表单中的元素都用name,其他的我们一般用id和class。id不能重复class能重复。都有标签都有syle,style就是样式。
2013-03-26 22:08:56 1618 2
原创 java web 重点
cookie与session、application的区别? 答:1.cookie保存在客户端,cookie只用于保存字符串。可以有两种形式保存,一种是保存到客户端的内存里,另一种是保存到客户端的文本里。用cookie.setMaxAge(expiry);区分两种保存状态。不设置这个时间,则代表保存到内存里。设置这个时间则以文件的形式保存。可以通过response.addCookie(cook
2013-03-20 21:33:39 1698
fragment实现选项卡界面
2013-11-24
Android.in.Action.2
2011-06-26
C-FREE 5.0
2011-06-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人