自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(148)
  • 资源 (15)
  • 收藏
  • 关注

原创 Kotlin委托

委托在Kotlin中占有很重要的应用,特别是属性委托比如lazy延迟初始化使用。委托模式是一项技巧,其他的几种设计模式如:策略模式、状态模式和访问者模式都是委托模式的具体场景应用。by关键字是一种约定,是对委托类的方法的约定,就是简化函数调用。这里的by约定简化了属性的get和set方法的调用,当然委托类需要定义相应的函数:getValue,setValue。...

2022-08-04 14:49:35 684 1

原创 取消ObjectAnimator动画引起的一个小问题

需求背景需求背景,取消当前的动画,重新开始倒计时动画。倒计时动画布局:<ProgressBar android:id="@+id/progress_voice" style="?android:attr/progressBarStyleHorizontal" android:layout_centerInParent="true" andr

2022-04-24 17:49:04 1121

原创 Android启动流程浅谈

一、开机启动流程:Android系统启动是由BootLoader引导开机,然后依次进入kernel、Native、Framework、App。二、冷起进程创建流程:进程的创建,主要涉及到两个进程的通信system_server进程和Zygote进程:system_server进程:是用于管理整个Java framework层,包含ActivityManager,PowerManager等各种系统服务;Zygote进程:是Android系统的首个Java进程,Zygote是所有Java进程的父进

2022-04-12 21:19:44 2903

原创 AndroidStudio通过Profiler查找内存泄漏

除了LeakCanary和mat可以帮我们排查内存泄漏,Profiler也可以,功能强大,可以进行内存、绘制、网络、电量的分析。通过view-》Tool Window -》Profiler打开工具,选择对应的进程,选择MEMORY然后点击Recorder按钮:然后筛选,就可以查看结果了。勾选 show nearest Gc root only,然后查看非weakreference的引用(weakreference是不会导致内存泄漏的),往下就能找自己项目里写的代码,一般此处就是内存泄漏点。该案

2022-02-08 14:41:37 2930

原创 fling时无法左右滑动

上下滑动的RecyclerView嵌套可以左右滑动的ViewPager。RecyclerView滑动fling时,希望能够手动左右滑动。我们首先确定fling的触发条件: @Override public boolean onTouchEvent(MotionEvent e) { ...... switch (action) { case MotionEvent.ACTION_UP: { mVelocity

2021-07-06 21:01:22 146

原创 ViewPager问题搜集

一、滑动距离设置产品,不,测试任务当前滑动下一页时,需要距离太长。默认系统的距离:try { Field field = ViewPager.class.getDeclaredField("mTouchSlop"); //修改滑动距离 field.setAccessible(true); field.setInt(this, touchSlop); //滑动长度大于150px的时候,ViewPager才进行滑动 }

2021-05-24 16:54:44 326

原创 Java final的使用

1、Java方法形参被final修饰1)final修饰基本变量如果修饰的是基本变量,基本类型的值是不能改变的/*** 对于基本类型,基本类型的值在方法内部是不能够改变的* @param i*/public static void checkInt(final int i){//编译不通过,final修饰的局部变量i的值是不能够改变的// i=10;}2)final修饰的是引用类型的变量如果修饰的是引用类型的变量,引用类型变量所指的引用是不能改变的,但引用类型变量的值是可以改变

2020-12-10 11:54:41 182

原创 Android静态变量引起的NPE

1、静态变量的优势静态变量位于虚拟机的方法区,静态变量是在类被load的时候分配内存的。当类被卸载的时候才会被销毁。2、静态变量的npe明确一件事,app不是只有在内存不足的情况下被回收,其实当应用被切换成后台的时候长久没使用,也会被系统回收的。比如在应用A页面中突然接到一个电话,在接完电话的时候,应用很可能已经被回收了,此时再次进入A页面时,是系统重新创建的,Application也可能会被重新创建。所以保存在Application、Activity、静态变量都可能为空了。其实Application

2020-12-10 11:42:54 631

原创 SimpleDateFormat性能优化

目录标题使用ThreadLocal1、重写initialValue方法2、调用set()方法赋值后台数据发现APP出现一个ANR。追踪发现是日志库SimpleDateFormat format = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);出现的。由于APP一旦启动就会生成大量的日志,每条日志都有日期,该代码会创建很多对象。对于一般需求改性能可以忽...

2020-01-09 16:58:22 1704

原创 JNI入门和集成现有的C代码

Android开发JNI流程JNI初始牛刀第一步,环境配置第二步,创建文件MyJNIUtils.java类第三步,生成MyJNIUtils.class类第四步,生成JNI对应的头文件第五步,实现MyJNIUtils.c文件第六步,引入动态库第七步,生成so文件第八步 CMake编写最后一步运行开发已有的c库JNI初始牛刀第一步,环境配置NDK需要下载并配置NDK路径,检测local.prop...

2019-08-19 16:11:11 410

原创 像Glide一样绑定Activity的生命周期

如何像Glide一样绑定Activity的生命周期呢,本文通过模拟Glide实现一个简单的绑定Activity生命周期的方法。本文尽量使用Glide一样的类名,删除不需要的业务,实现的思想大同小异。1、业务类RequestManager和Glide不同个,我们把业务类实现在RequestManager中,这里有几个生命周期的回调方法:onStart()、onStop()、onDestory(...

2018-12-08 15:48:04 485

原创 Android 开发之Android Studio

一、插件的安装1、alibaba java coding guidelines 2、codota 3、git安装 4、sonar二、build运行1、初探随着项目变的越来越大,特别是使用了组件化之后,build需要的时间越来越久,越来越慢了。项目现在运行一次40s,一天编译很多次的情况下,无法做任何事,是多么浪费时间。 网上一般有以下几种方式解决: 1)org.g...

2018-08-21 15:01:07 308

原创 RecyclerView的高级使用

1、ScrollView嵌入RecyclerView的处理 用NestedScrollView替代ScrollView,如下布局: &lt;android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:...

2018-07-05 21:08:47 921

原创 layout_weight的正确姿势

故事的开始是这样子的,起先我布局了一个XML文件: 想要的效果是四个控件平分该LinearLayout。首先考虑使用了layout_weight ,设置四个控件都为1。但我发现最后一个控件好像有点过分,嗯,可能是我的眼镜有问题,于是我去洗了下眼镜(洗手液洗眼镜很干净)。打开模拟器看了下,好像第三个也有点过分。于是我好像发现了什么,于是我又写了一行布局: 严重了我的猜测,是weigh...

2018-07-05 21:06:17 269

原创 RxLifecycle的使用

RxJava和RxAndroid(https://github.com/ReactiveX/RxAndroid)越来越流行,通过线程调度器很容易控制和切换线程,。但是使用的时候很容易导致内存泄露。Rxlifecycle (https://github.com/trello/RxLifecycle)就是被用来解决由于发布了一个订阅后而没有及时取消Activity/Fragment无法销毁导致的内...

2018-07-05 21:03:35 1572

原创 git的工作流程

git add .git commit -m “xxx”git checkout developgit pull -rgit checkout dsc/developgit rebase develop 可能有冲突,命令git status会提示。此时可以git diff — cached xx/xx/xx/xx.java查看冲突的详情,然后git add xx/xxx/xx...

2018-07-05 21:01:10 282

原创 发布Android library的依赖

前言jitpack.io()实现 — 此方法配合github使用比较简单。本文主要参考:jitpack官方文档实现的。第一步,创建Library首先需要一个library的项目,比如可以通过Android Studio创建,选择new module–&gt;Android Library即可创建将要发布的library。第二步,添加插件为了能在JitPack上编译,需要添加an...

2018-04-22 12:11:10 733

原创 软键盘遮挡的解决

软键盘遮挡有两类,一类是完全遮挡,一类是遮挡一部分。 为什么会出现遮挡? 软键盘是一个dialog,有InputMethodService创建。当我们点击输入框时,系统会对当前的主窗口进行调整,以便留出相应的空间来显示该Dialog在底部。我们快速过一下源码便得知: InputMethodService继承AbstractInputMethodService,继承Service。 只挑重点过...

2018-03-29 16:55:06 1460

原创 图片下拉放大并回弹

通过扩展ScrollView实现,可以设置需要放大的View,放大系数,放大倍数,回弹时间系数package com.test.androidtest.widget;import android.animation.ObjectAnimator;import android.animation.ValueAnimator;import android.content.Context;...

2018-03-29 16:47:54 739 1

原创 Android开发模板------ViewPager(三):实现无限循环、可嵌套RecyclerView、可控制滑动速度

一、使用布局就不贴了,直接写业务逻辑:private ViewPager mPager; private LinearLayout mVPIndicate; private void initPager() { mPager = (ViewPager)findViewById(R.id.mPager); mVPIndicate = (LinearLay

2017-12-12 09:25:51 1223

原创 Android开发模板------ViewPager(一)用PagerAdapter实现图片滑动作为引导页

iewpager可以做很多事情,从最简单的导航,到页面菜单等等。那如何使用它呢,与ListView类似,我们也需要一个适配器,就是PagerAdapter。 首先看布局文件:<android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_pa

2017-12-12 09:20:34 406

原创 Error: Your project contains C++ files but it is not using a supported native build system.

运行Android Studio项目出现这个问题: * What went wrong: Execution failed for task ‘:app:transformClassesWithDexForRelease’. com.android.build.api.transform.TransformException: com.android.ide.common.process.P

2017-11-02 10:08:40 850

原创 Execution failed for task ':app:transformClassesWithDexForRelease'.

运行Android Studio项目出现这个问题: * What went wrong: Execution failed for task ‘:app:transformClassesWithDexForRelease’. com.android.build.api.transform.TransformException: com.android.ide.common.process.P

2017-10-30 16:56:39 1375

原创 android studio JNI/NDK的简单使用

最近更新android sdk26(8.0)时看到NDK 15.2.4203891于是就更新了,没想到直接就把D盘干满了,只能删掉D盘一些文件了,其中包括android-ndk-r13b文件。 顺便再运行一遍记录下吧,虽然接触JNI开发的机会不多,但是偶尔有涉及,比如我们把登录的AES秘钥放到了jni里,提高了安全性,比较破解so文件比java难度高些。1、环境配置除了更新上文提到的NDK,还需要

2017-10-14 12:59:15 502

原创 Nexus私服的搭建

1、下载包安装包为:nexus-professional-2.14.5-02.jar2、安装…\nexus-professional-2.14.5-02\bin执行 nexus.bat(使用命令行)时出现: Wrapper | OpenSCmanager failed - 拒绝访问。(0x5) 请按任意键继续…切换至管理员状态下,继续执行,出现: the nexus-webapp s

2017-09-29 15:44:39 509

原创 Android上的依赖库简介

android不但可以引用jar包,而且还有自己的特殊jar包–aar压缩包。一、aar的生成方法1、直接make project生成aar在生成AAR的时候,先创建一个Library的Module,然后Build –> Make project(或者gradle clean build)就可以在build/outputs/aar下生成xxx.aar文件。 以上方法会有个问题:依赖的第三方比如de

2017-09-27 09:50:18 3365

原创 剑指Offer题目:从扑克牌中随机抽 5 张牌,判断是不是顺子,即这 5 张牌是不是连续的。 2-10 为数字本身,A 为 1,J 为 11,Q 为 12,K 为 13,而大小王可以看成任意的 数字。

剑指Offer面试题 44:扑克牌的顺子 从扑克牌中随机抽 5 张牌,判断是不是顺子,即这 5 张牌是不是连续的。 2-10 为数字本身,A 为 1,J 为 11,Q 为 12,K 为 13,而大小王可以看成任意的 数字。

2017-08-01 15:33:05 3066

转载 给 Android 开发者的 RxJava 详解

前言我从去年开始使用 RxJava ,到现在一年多了。今年加入了 Flipboard 后,看到 Flipboard 的 Android 项目也在使用 RxJava ,并且使用的场景越来越多 。而最近这几个月,我也发现国内越来越多的人开始提及 RxJava 。有人说『RxJava 真是太好用了』,有人说『RxJava 真是太难用了』,另外更多的人表示:我真的百度了也谷歌了,但我还是想问: RxJava

2017-07-25 17:45:18 703

原创 Fiddler抓取主流新闻客户端搜索url

仅仅是学习Fiddler,无商用,如有侵权请告知作者删除本文。今日头条:(webview) https://is.snssdk.com/api/2/wap/search/?from=search_tab&keyword=%E9%9B%84%E5%AE%89%E6%96%B0%E5%8C%BA&action_type=sug_keyword_search&iid=11808346515&device

2017-07-03 17:32:52 9018 4

转载 调整数组顺序使奇数位于偶数前面

题目:输入一个整数数组,实现一个函数来调整该函数数组中数字的顺序,使得 所有奇数位于数组的前半部分,所有的数组位于数组的后半部分

2017-07-03 11:06:31 286

原创 17上半年工作总结

一、客户端的工作1、系统框架从MVC转MVPMVP是MVC的一个衍生,主要目的是为了解耦,使项目易于维护,后续功能易于扩展。在MVC模型里,更关注Model的不变,Model不依赖于View,但是View是依赖于Model的。不仅如此,因为有一些业务逻辑在View里实现了,导致更改View也是比较困难的,至少那些业务逻辑是无法重用的。 在以前的版本中,随着界面及其逻辑的复杂度不断提升,Activi

2017-06-30 16:43:07 364

原创 禁止WebView返回时刷新

禁止WebView返回时刷新webview在内部跳转的新的链接的时候,发现总会在返回的时候reload()一遍,但有时候我们希望保持上个状态。 [TOC]1、两种解决办法,第一种方法如果仅仅是简单的不更新数据,可以设置: mWeb.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ONLY);2、第二种情况是从新new一个WebView开发的

2017-05-18 15:49:06 7159 2

原创 react-native的简单使用

一、网上搜集RNandroid的问题版本更新太快,到现在还没有到达版本1.0,技术并没有那么稳定使用了RN,就意味着和Google的android开发控件走上了两条不一样的路线。二、目前存在的问题1、react-native库会直接带动整个编译环境提升到最高,否则编译不了。带来的影响是新的buildtool似乎把很多以前废弃的函数直接undfine了,即可能找不到该函数了。以前的很多业务代码报

2017-03-03 16:49:55 9219

原创 RecyclerView 选择多个item的实现

模仿网易新闻客户端阅读偏好的频道选择,先看实现的页面: 直接上代码:

2017-02-17 17:28:40 3242

转载 android时间工具--多久之前

在开发新闻客户端的时候,是在会显示时间是多久之前,比如10分钟前,8小时前,一月前等等。 下面是一个简单的实现:

2017-02-16 10:52:51 1170

转载 在Android中使用比JSON性能高的FlatBuffers

FlatBuffers是google最新针对游戏开发退出的高性能的跨平台序列化工具,目前已经支持C++, C#, Go, Java, JavaScript, PHP, and Python (C和Ruby正在支持中),相对于json和Protocol Buffers,FlatBuffers在序列化和反序列化方面表现更为优异,而且需要的资源更少,更适合大部分移动应用的使用场景。 除了高性能和低内存消

2017-01-03 16:07:19 1723

转载 Android最佳开源库

原文:https://cloudrail.com/best-android-libraries-for-developers/ 工欲善其事,必先利其器。一个好的开发库可以快速提高开发者的工作效率,甚至让开发工作变得简单。动画 Android View Animations:一个非常强大的开源动画库,开发者可以用来创建各种效果。 RecyclerView Animators:可实现Recycl

2016-11-28 08:55:41 530

原创 Android数据库操作--greenDAO的入门使用

目前android经常用的orm框架主要有greenDAO、OrmLite、AndrORM。其中greenDAO的运行效率最高,内存消耗最少,性能最佳。 greenDAO是一个可以快速将Java对象映射到SQLite数据库的表单中的ORM解决方案。设计的主要目标:一个精简的库;性能最大化;内存开销最小化;易于使用的APIs;对Android进行高度优化。

2016-10-17 16:59:49 5379 1

原创 android系统架构MVP案例分析

前言首先我们应该避免上帝类,上帝类(比如无所不能的Activity)的维护成本很高,你很难理解正在进行的操作,并且难以测试和扩展,这就是为什么要避免创建上帝类的黄金法则。在Android开发中,如果不考虑架构的话,Activity类往往会越来越大,最大的问题就是在Activity中同时存在业务逻辑和UI逻辑,这会增加测试和维护的成本。目前流行的开发架构有MVC、MVP、MVVM等,起先使用比较多的是

2016-09-30 15:49:47 898

转载 webview遇到的那些坑与解决方法

1. WebView的内存泄露。这个问题,很难清晰描述,你在谷歌里搜 webview lead memory 能搜到很多结果 甚至还有给谷歌提交的issue 哈哈,我也无法给出一个清晰的答案 在什么时候 什么版本那些手机上一定会出现内存泄露, 但是根据一些monkey结果来看,有时,webview内存泄露的情况还是很严重的,尤其是当你加载的页面比较庞大的时候。解决方案参考下微信和qq的做法,试了一

2016-09-05 14:40:09 4595

font awesome

Font Awesome gives you scalable vector icons that can instantly be customized — size, color, drop shadow, and anything that can be done with the power of CSS.

2015-12-28

图片处理Demo

android图片的各种处理:放大缩小,旋转,合成,置灰,倒影,圆角,涂鸦,剪切等

2015-08-27

android DownloadManager示例

DownloadManager是系统开放给第三方应用使用的类,包含两个静态内部类DownloadManager.Query和DownloadManager.Request。DownloadManager.Request用来请求一个下载,DownloadManager.Query用来查询下载信息,这两个类的具体功能会在后面穿插介绍。

2015-06-29

loader contentprovider优化Listview

使用Loader+contentProvider删除修改ListView 并替换notifyDataSetChanged 刷新 该资源代码是网上别人的代码 做了些简单的修改 这是网上大牛写的 做了微改并上传以便未来使用

2015-05-12

ListView左滑Item出现菜单

非常好用的东西,模仿QQ消息列表左滑出现两个菜单的Demo。可以直接拿来使用。

2015-05-11

按字母顺序选择城市

可以通过字母选择城市,比如获取天气数据的时候,需要选择对应的城市等等。程序是借鉴网络上修改而成的,可以直接运行。

2015-05-07

开源AndroidSideMenu

AndroidSideMenu能够让你轻而易举地创建侧滑菜单。需要注意的是,该项目自身并不提供任何创建菜单的工具,因此,开发者可以自由创建内部菜单。

2015-02-12

android网络通信框架Volley

Volley是Android平台上的网络通信库,能使网络通信更快,更简单,更健壮。 olley特别适合数据量不大但是通信频繁的场景

2015-02-02

技术交流PPT模板

技术交流PPT模板。网上收集而来的,留着以后使用。

2015-01-30

DragSortListView

Android 可拖拽排序列表的listview (DragSortListView)Android DragSortListView 支持 拖拽排序和左右滑动删除的listview 扩展. DragSortListView适用于带有任何优先级的列表:收藏夹、播放列表及清单等,算得上是目前Android开源实现拖动排序操作最完美的方案。 1、完美的拖拽支持; 2、在拖动时提供更平滑的滚动列表滚动; 3、支持每个ListItem高度的多样性 4、公开startDrag()和stopDrag()方法; 5、有公开的接口可以自定义拖动的View。

2015-01-06

Android利用广播BroadCast监听网络的变化

Android利用广播BroadCast监听网络的变化。该Demo是网络资源整理,可以正常运行。你可以看到内部接口的使用,广播机制的使用,网络连接状态的检查等。

2014-12-26

Android回调函数的例子

Java回调函数的理解。通过在Android小程序下运行一个Java回调程序。代码内部有简单讲解。

2014-12-26

2014阿里巴巴笔试题

2014阿里巴巴笔试题。答案在最后,个别不会,请见谅,有错请指正。

2014-07-24

上滑停靠顶端的悬浮框

向上滑动的时候,其中控件不会跟着向上移动,而会停留在顶部,成为悬浮框。类似美团和大众点评抢购控件一样会停止在顶端。

2014-07-11

嵌入式C语言设计

嵌入式系统技术丛书 机械工业出版社 艾克武等译

2013-04-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除