
Android 开发及核心技术
文章平均质量分 58
candyguy242
这个作者很懒,什么都没留下…
展开
-
ParameterizedType详解
ParameterizedType详解参数化类型public interface ParameterizedType extends Type { Type[] getActualTypeArguments(); Type getRawType(); Type getOwnerType();} 何为参数化类型列举一个实体类用代码来解释什么...转载 2019-11-06 17:54:40 · 14685 阅读 · 3 评论 -
android 按home键或三方启动回到桌面,然后再次进入app,app重新打开问题
这种处理一般是有一个专门的启动Activity,然后再跳转到真正的主Activity,例如主Activity叫MainActivity,SplashActivity的launchMode设为standard,MainActivity设置为singleTask:可以在SplashActivity的onCreate中方法判断MainActivity是不是已经存在,如果已经存在,就直接finish掉SplashActivity即可。 @Override protected void onC原创 2021-04-13 18:50:59 · 1354 阅读 · 0 评论 -
Android App Widget创建步骤 带配置界面
本文来自http://blog.youkuaiyun.com/chenshaoyang0011转载请申明文章出处!Android通知系统是它的一大特色,而其中,AppWidget是其中一个亮点。在开发应用的中,很多时候可以为其添加一个AppWidget显示在桌面中,及时方便的与用户进行交互。这里就简单的熟悉一下开发一个AppWidget的流程吧。想要在应用中创建一个AppWidget,至少需要以下几样东西:1、需要创建一个AppWidgetProviderInfo,来描述AppWidget的元数据。2.转载 2021-04-07 18:14:24 · 1049 阅读 · 0 评论 -
Android MVVM模式 轻松拥有带状态管理的ViewModel
开发中经常要表示一个数据当前状态,比如加载中、加载错误、空列表。这个时候如果我们每个地方自己去处理就很麻烦,如果我们使用的viewmodel自己就能表示这些状态岂不美哉?另外数据加载中还经常需要处理取消的逻辑,比如使用rxjava,自动管理disposable就更好了~说干就干~封装一个BaseViewModel~package cn.icetower.basebiz.vm;import androidx.annotation.CallSuper;import androidx.anno原创 2020-08-21 11:14:04 · 3317 阅读 · 0 评论 -
Android TabLayout indicator 指示器宽度修改 最新思路及实现 调用方便
这两天手头上的项目需要给Tablayout指示器设置一个固定的宽度,但谷歌并没有提供api,网上搜索的各种方式试了之后也没什么效果,而且调用比较麻烦,于是自己翻了源码,发现只要在tablayout中修改指示器左右的值就可以达到目的。源码如下: public void draw(Canvas canvas) { .... if (...原创 2019-10-14 19:33:01 · 1633 阅读 · 1 评论 -
Shallow Heap 和 Retained Heap的区别
Shallow SizeShallow Size是对象本身占据的内存的大小,不包含其引用的对象。对于常规对象(非数组)的Shallow Size由其成员变量的数量和类型来定,而数组的ShallowSize由数组类型和数组长度来决定,它为数组元素大小的总和。Retained SizeRetained Size=当前对象大小+当前对象可直接或间接引用到的对象的大小总和。(间接引用的含义:A->B...转载 2018-06-18 12:46:17 · 845 阅读 · 2 评论 -
使用RxJava 提升用户体验
编辑推荐:稀土掘金,这是一个高质量的技术干货分享社区,web前端、Android、iOS、设计资源和产品,满足你的学习欲望。一个完美的移动世界永远不会失去连接,而服务端也永远不会返回错误。构建一个很棒的app对于用户来说是幸福的事而对于开发者来说则是痛苦的事。用户点击一个按钮就阻塞了所有操作的时代已经过去了,那是要死人的。让我们来创建一个更好的文本框搜索功能并关注以下需求尽可能少的请求对用户尽可能...转载 2018-06-24 15:15:59 · 227 阅读 · 0 评论 -
Android官方架构组件:Lifecycle详解&原理分析
概述在过去的谷歌IO大会上,Google官方向我们推出了 Android Architecture Components,其中谈到Android组件处理生命周期的问题,向我们介绍了 Handling Lifecycles。同时,如何利用 android.arch.lifecycle 包提供的类来控制数据、监听器等的 lifecycle。同时,LiveData 与 ViewModel 的 lifec...转载 2018-06-13 12:30:00 · 415 阅读 · 0 评论 -
Android官方架构组件:Lifecycle详解&原理分析
概述在过去的谷歌IO大会上,Google官方向我们推出了 Android Architecture Components,其中谈到Android组件处理生命周期的问题,向我们介绍了 Handling Lifecycles。同时,如何利用 android.arch.lifecycle 包提供的类来控制数据、监听器等的 lifecycle。同时,LiveData 与 ViewModel 的 lifec...转载 2018-06-12 10:43:34 · 1023 阅读 · 0 评论 -
android.os.BadParcelableException: ClassNotFoundException when unmarshalling
本文主要分析android.os.BadParcelableException: ClassNotFoundException when unmarshalling这个异常的原因及解决方法,解释了android的class loader. 一、现象:应用打开,home键到后台,过一段时间打开,偶现fc,log如下:E/AndroidRuntime(9085): Caused b转载 2016-12-29 15:58:51 · 13588 阅读 · 1 评论 -
从异常堆栈中还原 ProGuard 混淆过的代码
今天的奇技淫巧是由 Danial带来的如何还原 ProGuard 混淆后的代码。ProGuard在 Android 应用发布的时候经常会用来混淆代码。 混淆后的应用发布到市场上,当用户反馈 Crash 的时候, 开发者看起来就不那么好定位问题根源了。例如:帮助12345Caused by: java.lang.Null转载 2015-08-07 12:52:00 · 804 阅读 · 0 评论 -
Android String.xml Html格式化方法
Set TextView text from html-formatted string resource in XMLust in case anybody finds this, there's a nicer alternative that's not documented (I tripped over it after searching for hours, and finall转载 2015-08-03 16:07:48 · 3152 阅读 · 0 评论 -
【Android Studio快捷键】之导入相应包声明(import packages)
1 Android studio 只有import单个包的快捷键:Alt+Enter。没有Eclipse下的快速导入包的快捷键Ctrl+Shift+O。 2但Android studio设置里有一项Auto Import自动导入功能。设置过程如下: Android studio --> File--> Settings --> Editor --> Auto转载 2015-07-17 09:54:41 · 646 阅读 · 0 评论 -
Android Intents with Chrome
A little known feature in Android lets you launch apps directly from a web page via anAndroid Intent. One scenario is launching an app when the user lands on a page, which you can achieve by embed转载 2015-07-15 18:46:31 · 1142 阅读 · 0 评论 -
properties 配置文件中值换行的问题
在使用properties配置文件的时候我们经常碰到如下两个问题1:当a=b中的b值内容特别长的时候为了阅读方便我们手动换行,但如果我们直接回车那么后面的数据就会丢失。那如何解决呢?例如:a=aaaaaaaaasdfasdfasdfasdfasdfadfasdfaf我们如果想分两行卸载配置文件中应该如下写法a=aaaaaaaaas\dfasdfasdfasdfasdfadf转载 2015-03-31 18:26:49 · 9262 阅读 · 1 评论 -
Android 4.3中的视觉边界布局(Optical bounds layout)
Android 4.3中的视觉边界布局(Optical bounds layout)作者: rain 分类: 移动 发布时间: 2013-07-25 11:09 ė 6没有评论Optical bounds layout(视觉/光学边界布局)是在4.3(Api level 18)中引入的一种新的布局对齐方式。之前是使用控件边界来布局的。可以在“设置” 中的 “开发者选项”转载 2015-04-03 10:10:33 · 1477 阅读 · 0 评论 -
ProGuard的作用、使用及bug分析
本文主要ProGuard的作用、使用及bug分析。1、ProGuard作用ProGuard通过删除无用代码,将代码中类名、方法名、属性名用晦涩难懂的名称重命名从而达到代码混淆、压缩和优化的功能,跟JavaScript的混淆压缩类似。压缩和优化使得编译后apk包更小。混淆可以保证代码在被反编译后读懂的难度很大,防止逆向工程。这点也是我们在应用发布前需要ProGuard的一大原因。转载 2015-04-03 17:33:24 · 774 阅读 · 0 评论 -
Proguard语法及常用proguard.cfg代码段
关于ProGuard的作用、使用及bug分析可见ProGuard的作用、使用及bug分析。1、ProGuard的常用语法-libraryjars class_path 应用的依赖包,如android-support-v4-keep [,modifier,...] class_specification 不混淆某些类-keepclassmembers [,modifier,...]转载 2015-04-03 17:32:31 · 517 阅读 · 0 评论 -
一个绚丽的loading动效分析与实现!
尊重原创,欢迎转载,转载请注明: FROM GA_studio http://blog.youkuaiyun.com/tianjian4592 前两天我们这边的头儿给我说,有个 gif 动效很不错,可以考虑用来做项目里的loading,问我能不能实现,看了下效果确实不错,也还比较有新意,复杂度也不是非常高,所以就花时间给做了,我们先一起看下原gif图效果:转载 2015-04-10 15:35:27 · 766 阅读 · 0 评论 -
APK签名原理
http://blog.youkuaiyun.com/kickxxx/article/details/18252881消息摘要 -Message Digest简称摘要,请看英文翻译,是摘要,不是签名,网上几乎所有APK签名分析的文章都混淆了这两个概念。摘要的链接http://en.wikipedia.org/wiki/Message_digest简单的说消息摘要就是转载 2015-04-13 13:36:33 · 579 阅读 · 0 评论 -
APK ROM 签名原理
前言这些天有人问我关于APK或者ROM签名的原理,因为先前接触过签名的东西,就想当然地认为在META-INF下存在3个文件, 一个是清单文件MANIFEST.MF,一个是签名后的CERT.SF,一个是公钥文件CERT.RSA,网上不少资料也是这样的观点。后来查看了签名工具的源代码才发现大错特错,CERT.SF根本不是用私钥对MANIFSET.MF签名后的文件,只是对MANIFEST.MF的每个转载 2015-04-13 13:59:36 · 1578 阅读 · 0 评论 -
LinearLayout中的layout_weight属性
LinearLayout中的layout_weight属性 布局LinearLayout代码 Xml代码 xml version="1.0" encoding="utf-8"?> LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:or转载 2015-04-25 12:01:01 · 654 阅读 · 0 评论 -
proguard 原理
from:http://www.eoeandroid.com/thread-209210-1-1.htmlproguard 原理Java代码编译成二进制class 文件,这个class 文件也可以反编译成源代码 ,除了注释外,原来的code 基本都可以看到。为了防止重要code 被泄露,我们往往需要混淆(Obfuscation code , 也就是把方法,字段,包和类这些java 元素的名转载 2015-05-21 15:46:22 · 493 阅读 · 0 评论 -
那些年收藏的Android开源库集合(UI效果)
动画效果粒子动画效果https://github.com/glomadrian/Grav水波式loading等待动画https://github.com/race604/WaveLoading滚动RecycleView动画https://github.com/borjabravo10/FocusResizeRecycleView中各种动画https://github.com/wasabeef/re...转载 2018-07-07 10:45:05 · 374 阅读 · 0 评论 -
告别Dagger2模板代码:Dagger Android使用详解
概述,学Dagger2-Android的理由Dagger2的窘境在使用Dagger2进行Android开发时,不可避免的问题是我们需要实例化一些Android系统的类,比如Activity或者Fragment。最理想的情况是Dagger能够创建所有需要依赖注入的对象,但事实上,我们不得不在容器的声明周期中声明这样的代码:public class FrombulationActivity exten...转载 2018-07-08 00:17:11 · 674 阅读 · 1 评论 -
Android Debug Database 一个好用的Android数据库调试查看工具
原文地址 http://blog.youkuaiyun.com/qq_25806863/article/details/62216763平时要查看手机数据库内容就很麻烦了,就算把db文件下载到电脑上了,还需要下载专门的数据库工具来查看。而且每次修改数据库都需要重新下载,很麻烦。 然后今天发现了Android Debug Database, githud地址:https://github.com/ami...转载 2018-09-03 11:47:32 · 348 阅读 · 0 评论 -
Android DataBinding 从入门到进阶
原文地址:https://blog.youkuaiyun.com/new_one_object/article/details/80412530DataBinding 是谷歌官方发布的一个框架,顾名思义即为数据绑定,是 MVVM 模式在 Android 上的一种实现,用于降低布局和逻辑的耦合性,使代码逻辑更加清晰。MVVM 相对于 MVP,其实就是将 Presenter 层替换成了 ViewModel 层...转载 2018-10-13 10:40:04 · 2185 阅读 · 0 评论 -
BRVAH的Section中自定义间距,条目完美均分,支持Section顶部和底部间距
关于在RecyclerView中自定义GridLayoutManager的间距问题,可以参考我的另一篇博客:https://blog.youkuaiyun.com/candyguy242/article/details/82908324本文在此基础上,扩充了对BRVAH的Section中的布局间距支持,效果如下:核心思想就是在计算间距时,把每一个Section的Positon等信息抽象成...原创 2018-09-30 15:32:30 · 3043 阅读 · 1 评论 -
让你明明白白的使用RecyclerView——SnapHelper详解
https://www.jianshu.com/p/e54db232df62简介RecyclerView在24.2.0版本中新增了SnapHelper这个辅助类,用于辅助RecyclerView在滚动结束时将Item对齐到某个位置。特别是列表横向滑动时,很多时候不会让列表滑到任意位置,而是会有一定的规则限制,这时候就可以通过SnapHelper来定义对齐规则了。SnapHelper是一...转载 2018-10-22 13:58:38 · 1226 阅读 · 0 评论 -
Glide CircleImageView第一次加载不出来,动画失效的问题解决方案
网上有很多关于这个问题的讨论,也有些解决方法,但最后基本上都会弃用CircleImageView,这样一来一些通过CircleImageView很方便实现的功能就没法用了,比如设置border。第一次加载不显示的问题归根结底是因为CircleImageView不支持TransitionDrawable,网上找了一个类似的库,很不错,也支持TransitionDrawable,使用方式...原创 2019-06-10 13:49:42 · 900 阅读 · 0 评论 -
Android全屏中adjustResize的失效的解决方案 AndroidBug5497Workaround
最近做项目中遇到Android全屏中adjustResize失效的问题,网上搜索了一堆后,基本上都是使用AndroidBug5497Workaround这个工具类,但是在实际使用中遇到软键盘不弹出时,整体高度不正确的问题。看了工具类的代码后,觉得计算全屏高度的方式有些绕了,既然Activity已经全屏,索性直接将屏幕高度作为软键盘不弹出的高度。代码如下:package com.k...原创 2019-07-04 16:07:36 · 2215 阅读 · 1 评论 -
纠正:Android RecyclerView滚动到指定位置并置顶(滚动方法、移动置顶、定位滑动到指定位置item)
最近博主发现让RecyclerView滑动到某一位置并置顶的博客一大堆,抄的是完全一模一样。此外,虽然这些博客“解决”了这些问题,但这种解决方案过于浅显、粗暴,甚至都违背了开发思想。遂在此纠正这种错误。RecyclerView提供了几种移动的方法scrollToPositionscrollToscrollBysmoothScrollBysmoothScrollToPosit...转载 2019-07-23 09:43:55 · 6952 阅读 · 0 评论 -
安卓目录控件
项目中需要实现一个目录组件,在网上找来找去没有合适的,干脆自己搞了一个:特点 Feature:可配置性高,条目样式可以通过multi type的方式拓展,分块间距可以通过decoration来设置,感谢 BRVAH~ 滚动时自动同步两列的位置; 反向滚动完全支持,此时前一列表会从最后一项开始显示; 泛型支持,设置时更易获取数据; 使用方便~GitHub地址:https:/...原创 2019-09-24 19:37:50 · 340 阅读 · 0 评论 -
深入理解 Kotlin 类属性
Kotlin 类属性可以说是 Kotlin 类最难理解和掌握的部分了,变化多、关键字多、限制多,与 Java 差别相当大,很多人都会在这上面栽不少坑,今天我们就一起来深入看看 Kotlin 类属性。Kotlin 中去除的类属性关键字Kotlin 中去除了几个用于类属性的关键字,需要用注解实现。 transient:这个关键字表示该属性是「瞬时」的,不参与类的序列化。Kotlin 中用...转载 2018-08-29 13:07:27 · 2597 阅读 · 0 评论 -
Mastering Kotlin standard functions: run, with, let, also and apply
https://medium.com/@elye.project/mastering-kotlin-standard-functions-run-with-let-also-and-apply-9cd334b0ef84国内的文章基本上都是泛泛而谈,说不清楚,老外的这个文章讲的算不错的~另外这里有讨论:https://stackoverflow.com/questions/45977011/...转载 2018-08-24 13:44:24 · 358 阅读 · 0 评论 -
Android Dagger2 MVP架构 一看就明白
Dagger2介绍好了,介绍一下Dagger2吧! Dagger2 是Google 的新一代依赖注入框架(依赖注入不讲,你都看到这篇文章了,那你应该懂,如果不懂,请度娘、谷哥之,此文不废话),Dagger2是Dagger1的分支,但两个框架没有严格的继承关系,亦如Struts1 和Struts2 的关系!那就有人问了,为什么要用Dagger2? 回答:解耦(DI的特性),易于测试(DI的特性),高...转载 2018-07-08 00:18:28 · 559 阅读 · 0 评论 -
Android Binder跨进程与非跨进程的传输异同源码分析
前两天看到Service的onBind函数返回值的三种情况(扩展Binder对象,Messenger,aidl),一直在想他们内部的实现有什么不一样的,网上很多文章都介绍了Service的绑定过程,但是并没有介绍对于跨进程与非跨进程,对于不同的返回值,其具体有什么区别,以及具体是怎么实现的。这篇文章就根据源码分析Android究竟是在哪部分来控制跨进程与非跨进程Binder的传输的,Binder究...转载 2018-07-15 16:06:19 · 381 阅读 · 0 评论 -
CoordinatorLayout的使用如此简单
曾在网上找了一些关于CoordinatorLayout的教程,大部分文章都是把CoordinatorLayout、AppbarLayout、CollapsingToolbarLayout 以及Toolbar等一起使用来介绍,这让我不知不觉在心中认为把这几个布局要一起使用,而且只是用于那种场景中。其实CoordinatorLayout的功能并不是局限于与AppBarLayout一起使用,它的功能强大...转载 2018-07-26 13:36:43 · 265 阅读 · 1 评论 -
扒一扒 Android 运行时: DVM vs ART
在了解 Android 运行时之前,我们需要了解什么是运行时环境以及一些基本概念,即 Java 虚拟机(JVM)和 Dalvik 虚拟机(DVM)的功能。什么是运行时?简单来说,运行时就是一个供操作系统使用的系统,它负责将你用高级语言(比如 Java)编写的代码转换成 CPU/处理器能够理解的机器码。运行时由你的程序运行时所执行的指令构成,尽管本质上它们不属于程序代码的任何一部分。...转载 2018-07-27 17:16:47 · 216 阅读 · 0 评论 -
Android内存优化:DVM和ART原理初探
前言要学习Android的内存优化,首先要了解Java虚拟机,此前我用了多篇文章来介绍Java虚拟机的知识,就是为了这个系列做铺垫。在Android开发中我们接触的是与Java虚拟机类似的Dalvik虚拟机和ART虚拟机,这一篇我们就来了解它们的基本原理。1.Dalvik虚拟机Dalvik虚拟机( Dalvik Virtual Machine ),简称Dalvik VM或者DVM。它是...转载 2018-07-27 17:17:18 · 300 阅读 · 0 评论