Android开发总结
文章平均质量分 82
ltym2014
这个作者很懒,什么都没留下…
展开
-
Android 完整反编译APK过程(Mac版)
一、需要的工具**apktool:**反编译APK文件,得到classes.dex文件,同时也能获取到资源文件以及布局文件。**dex2jar:**将反编译后的classes.dex文件转化为.jar文件。**jd-gui:**用于将.jar文件转换成java代码。二、反编译步骤第一步:使用apktool工具对APK进行反编译1. 下载apktool注意:1中保存名为apktool的时候不能有后缀名,mac上默认为txt后缀2. 把下载好的apktool脚本和apktool.jar文件原创 2022-03-04 13:49:20 · 482 阅读 · 0 评论 -
2021年9月开发中遇到的问题记录
adb shell 如何进入到root权限adb shell之后,使用su无法进入到root权限的问题。在创建模拟器的时候选择Google APIs,Google Play无法获取root权限还在用 ZXing ? 试试华为统一扫码服务吧!https://juejin.cn/post/6967890062423883783模拟器录入指纹adb -e emu finger touch 1https://www.freesion.com/article/7112125198/AndroidStud原创 2021-10-19 09:09:36 · 691 阅读 · 0 评论 -
Android使用Build Variants构建不同包名的app,shareSdk如何配置以及遇到的问题
应公司业务需求,用同一代码构建不同包名的app,这个时候想到了Build Varants,一顿操作之后发现,项目中关于第三方登录和分享用的是shareSdk,而且是gradle方式引入的。引入文档要求在build.gradle下面加上下面的代码MobSDK { appKey "申请Mob的appkey" appSecret "申请Mob的AppSecret" ShareS...原创 2019-11-07 14:43:45 · 839 阅读 · 1 评论 -
LayoutInflater的一些理解
首先LayoutInflater是用来干嘛滴?当我们需要动态加载布局,或者adapter里面getView时,往往会用到这个类,我们最常用的并是LayoutInflater的inflate方法,这个方法有四种调用方式:1. public View inflate(int resource, ViewGroup root)2. public View inflate(int原创 2017-01-22 09:58:33 · 244 阅读 · 0 评论 -
关于重复使用InputStream对象的
关于重复使用InputStream对象的解决方法项目中使用Okhttp加载网络图片时,通过response.body().byteStream()获得InputStream流对象, 第一次需要用到该流去获得图片尺寸,而真正取图片显示时又使用了该流,当你去使用BitmapFactory.decodeStream(is, null, ops)获取bitmap时,bitmap总是null。第一次读取In原创 2017-02-09 11:01:00 · 1756 阅读 · 0 评论 -
AndroidStudio中jniLibs目录自动生成
在AndroidStudio中,Android选项下面的jniLibs和Project选项中的libs其实是同样的东西原创 2017-01-14 18:14:15 · 2418 阅读 · 0 评论 -
Android内存泄漏小谈---转载
Android内存泄漏小谈Android内存泄漏是一个经常要遇到的问题,程序在内存泄漏的时候很容易导致OOM的发生。那么如何查找内存泄漏和避免内存泄漏就是需要知晓的一个问题,首先我们需要知道一些基础知识。Java的四种引用强引用: 强引用是Java中最普通的引用,随意创建一个对象然后在其他的地方引用一下,就是强引用,强引用的对象Java宁愿OOM也不会回收他软引转载 2017-02-05 09:04:58 · 318 阅读 · 0 评论 -
Android 如何让EditText 失去焦点从而不弹出软键盘
项目中遇到一个问题,在布局中,最外层是一个ScrollView,里面有一个RecyclerView,RecyclerView的Item里面有EditText,初始化进来的时候,总是会抢占ScrollView的焦点,从而导致ScrollView不是位于最顶部,研究发现,是EditText抢占了焦点,开始直接设置EditText.setFocusable(false),scrollView是位于顶部了原创 2016-12-22 11:03:34 · 931 阅读 · 0 评论 -
android:clipToPadding使用
最近项目UI设计中,在ListView顶部会留20px的灰色高度,如图如果单纯的设置layout_marginTop或paddingTop,灰色部分并不能跟随ListView的滚动而滚动,会出现如下图效果加一个headerView有点浪费还比较麻烦,所以可以利用android:clipToPadding + paddingTopandroid:cli原创 2016-11-29 09:47:12 · 328 阅读 · 0 评论 -
ScrollView里嵌套RecyclerView时,在RecyclerView上滑动时出现卡顿(冲突)的现象
最近在项目中遇到一个现象,一个界面有一个RecyclerView(GridView型的),外面套了一层ScrollView,通过ScrollView上下滚动,但是在滑动的时候如果是在RecyclerView的内容上滑动,这时会出现滑动卡顿,而如果是在其他内容上滑动时就可以很顺畅的滑下去。这是RecyclerView和ScrollView的滑动事件冲突引起的,解决办法就是禁止RecyclerVi原创 2016-10-17 14:36:54 · 1640 阅读 · 0 评论 -
ScrollView嵌套 EditText,输入多行(足够多的情况)会使ScrollView整体滚动的问题
ScrollView 中嵌套 EditText,在 EditText 中输入多行,会使 ScrollView 整体滚动,如果输入的内容长到一定程度,如果再次获取焦点则会使EditText向上滚动过多以至于滚出视图范围。研究很久没能解决, 后来查看ScrollView的官方文档发现如下方法,大致意思是控制子view是否被固定于一个相对的位置,于是复写看看@Override public原创 2017-04-07 17:31:35 · 1091 阅读 · 0 评论 -
ViewFlipper锁屏解锁后停止滚动异常分析
ViewFlipper一般被用作指定的多个View对象的动态切换,当想要自动播放时,一般可使用startFlipping()启动播放。 但是,测试中发现,如果手机没有开启锁屏功能(黑屏后唤醒直接进入桌面或app),当手机黑屏后再次打开,你会发现停止播放了,而且即使主动调用startFlipper()也不会播放。从ViewFlipper源码来看, ViewFlipper自动播放的关键标志位是...原创 2018-03-16 10:54:27 · 1770 阅读 · 1 评论 -
Android工作学习收集整理(五月)
Android桌面图标自动生成 AndroidStudio 3.0 会为您的应用程序创建一个自适应图标,该图标仅在sdk 26中可用。使用xml文件,mipmap-anydpi-v26夹中的文件来使用自适应圆形图标,创建的时候默认生成。需要注意图标会小一圈,让UI切正常大小的替换一下就好。使用alibaba/vlayout时,onBindViewHolder未分发的问题。解决方法N...原创 2018-05-27 13:07:06 · 187 阅读 · 0 评论 -
Android 自定义房价均价走势折线图
最近接手一个二手房项目,类似于房天下,安居客等app,里面需要用到一个每月均价走势折线图,目测功能比较简单,没必要动用MpAndroidChart,也不能适应项目要求,所以觉得自己写一个简单的。在此做一个记录。先上图 这里主要是Y轴的刻度不明确,所以这里为了简单起见,固定最低点和最高点的位置,中间再均等分,算出每一份高度对应的价格,再确定具体价格对应的高度,具体如下: - 确定最低点和最高...原创 2018-06-09 18:31:05 · 1189 阅读 · 0 评论 -
关于Android 4.0+上面百度地图显示异常导致崩溃的总结(vivo x3v Android 4.4.2)GL_INVALID_VALUE
前提:fragmentation 框架下所有的地图都显示在fragmeng中 过程:最初使用的是MapView项目需求:fragment1中有局部地图,fragment2中有全屏地图,从fragment1中点击局部地图跳转到fragment2中。问题:这个时候你会发现,fragment1中的地图会重叠在fragment2中的地图上,只是重叠,没有任何点击或触碰事件,就...原创 2018-07-04 22:36:02 · 1875 阅读 · 1 评论 -
Android 基于Popupwindow实现的筛选房源信息等相关的控件,可以自由排序
先上图 功能 区分 支持区域二级选择 FilterTabConfig.FILTER_TYPE_AREA 支持单行选择 FilterTabConfig.FILTER_TYPE_SINGLE_SELECT 支持带EditText的单行选择 FilterTabConfig.FILTER_TYPE_PRICE 支持多类型选择 Fi...原创 2018-07-18 23:21:33 · 2516 阅读 · 5 评论 -
视频解码硬解和软解的区别及如何选择
视频解码硬解和软解的区别及如何选择原创 2018-09-03 20:46:34 · 42448 阅读 · 0 评论 -
MMKV——基于 mmap 的高性能通用 key-value 组件
MMKV——基于 mmap 的高性能通用 key-value 组件GithubMMKV for AndroidMMKV for Android 多进程设计与实现基于MMAP 内存映射的移动端通用keyvalue组件。底层的序列化和反序列化使用protobuf实现已经在ios上使用了3年,近期移植到Android平台通过mmap内存映射文件,提供一个内存块,App只管往里面写数据,...转载 2018-09-29 22:36:18 · 474 阅读 · 0 评论 -
为什么Android7.0和8.0上ApplicationContext.startActivty(...)不需要添加FLAG_ACTIVITY_NEW_TASK呢?
我们都知道在Android7.0之前,非Activity环境中(例如ApplicationContext)启动Activity需要添加FLAG_ACTIVITY_NEW_TASK标记位,才会正常启动Activity。因为非Activity的环境中并没有所谓的任务栈。但是,最近在项目中发现,在Android7.0和8.0上并不需要添加FLAG_ACTIVITY_NEW_TASK标记位也可以正常启动...原创 2018-12-23 21:29:18 · 1766 阅读 · 0 评论 -
关于Android8.0以上,recyclerView的焦点总是默认在第一个item上,并且带有选中状态的问题
项目中发现在在切换fragment(Fragment中带有RecyclerView)时,recyclerView的焦点总是默认在第一个item上,并且带有选中状态,事实上我并没有设置item的选中状态。多次测试发现,只在Android8.0(MIUI不会出现)以上才会出现这样的问题。查看官方文档,发现如下内容:现在,如果您没有为View对象(前景或背景图片)定义任何焦点状态颜色,框架会为Vi...原创 2019-01-07 19:54:18 · 10111 阅读 · 1 评论 -
Android中获取TextView行数
Android 获取TextView行数项目中发现,如果直接通过TextView.getLineCount()方法获取行数时,总是0,研究发现,setText()后立即调用getLineCount(),这时TextView还未完成measure,要想正确的获取TextView的行数有两种方法1.用ViewTreeObserver监听View初始化的各种状态使用ViewTreeObs原创 2016-08-08 09:18:54 · 16421 阅读 · 6 评论 -
Android开发一些共通方法的整理
Android开发一些共通方法的整理尺寸相关dp与px转换 dp2px、px2dpsp与px转换 sp2px、px2sp各种单位转换 applyDimension在onCreate()即可强行获取View的宽高 forceGetViewSizeListView中提前测量View尺寸 measureView设备相关获取设备MAC地址 getMacAddress获取设备厂商,如转载 2016-08-02 09:09:41 · 388 阅读 · 0 评论 -
Android开发中,有哪些让你觉得相见恨晚的方法、类或接口
1、Throwable类中的getStackTrace()方法,根据这个方法可以得到函数的逐层调用地址,其返回值为StackTraceElement[];2、StackTraceElement类,其中四个方法getClassName(),getFileName(),getLineNumber(),getMethodName()在调试程序打印Log时非常有用;3、UncaughtEx原创 2016-05-16 11:28:46 · 236 阅读 · 0 评论 -
Android开发中一些被冷落但却很有用的类和方法
Android开发中一些被冷落但却很有用的类和方法转载 2016-05-16 11:26:34 · 223 阅读 · 0 评论 -
Android 5.0 Service Intent must be explicit
Android 5.0 启动Service是报:Service Intent must be explicit.......错误原因是5.0的service必须显式调用public static Intent getExplicitIntent(Context context, Intent implicitIntent) { // Retriev原创 2016-03-11 16:20:10 · 248 阅读 · 0 评论 -
Broadcastreceiver components are not allowed to bind to services in android
Broadcastreceiver的OnReceive()里面去绑定Service时会报:Broadcastreceiver components are not allowed to bind to services in android异常,这是因为OnReceive的生命周期是很短的,receiver 可能不存在,并且receiver 可能会被killed。解决办法:原创 2016-03-29 14:34:58 · 2929 阅读 · 2 评论 -
Android开发项目小总结
1.scrollView是继承自frameLayout,所以在使用LayoutParams时需要用frameLayout的2.EditText中有一些预置文本的时候,想把光标调到最前面,一开始是使用的setSelection(0),结果发现在三星P1000上面有问题。经过研究发现需要先调用EditText.requestFocus(),再调用setSelection(0)。否则的话,在2.x的原创 2015-12-24 09:52:40 · 454 阅读 · 0 评论 -
Android实现不重复启动APP的方法
转载博客:http://blog.sina.cn/dpool/blog/s/blog_5de73d0b0102vpai.html?utm_source=bshare&utm_campaign=bshare&utm_medium=weixin&bsh_bid=883565991类似QQ,微信这样的app不会同时打开两个实例。比如:打开QQ客户端,进入到好友聊天界面,然后按HOME返回桌面转载 2015-12-23 13:57:38 · 496 阅读 · 0 评论 -
Android之计算缓存大小并且清空缓存
Android之计算缓存大小并且清空缓存转载博客:http://www.2cto.com/kf/201503/385492.html 项目中碰到了计算缓存大小和清空缓存的功能,这个很常见的功能,几乎每个APP都有,以为实现很简单,网上搜了一大堆,发现都不是符合我需要的,而且经常删除的没有效果,于是又另外找了一些资料,折腾了蛮久,终于完成了。以下的这个类的功能很简单,计算你的缓存总转载 2015-12-23 11:16:38 · 328 阅读 · 0 评论 -
自定义Application的标准写法
Application全局只有一个,它本身就已经是单例了,无需再用单例模式去为它做多重实例保护了,代码如下所示:public class MyApplication extends Application { private static MyApplication app; private static MyApplication getInstance(){原创 2015-12-23 11:06:09 · 1000 阅读 · 0 评论 -
在Activity中使用Thread导致的内存泄漏
Android 开发过程中,在 Activity 的生命周期里协调耗时任务可能会很困难,你一不小心就会导致内存泄漏问题。下面是一些小提示,能帮助你预防内存泄漏问题的发生:尽可能使用静态内部类而不是非静态内部类。每一个非静态内部类实例都会持有一个外部类的引用,若该引用是 Activity 的引用,那么该 Activity 在被销毁时将无法被回收。如果你的静态内部类需要一个相关 Activ原创 2016-05-16 11:29:51 · 374 阅读 · 0 评论 -
AutoCompleteTextView用法总结
1.AutoCompleteTextView设置下拉列表的背景样式,可以设置AutoCompleteTextView.setDropDownBackgroundDrawable()2.android:textCursorDrawable = "@null"EditText有一个属性:android:textCursorDrawable,这个属性是用来控制光标颜色的android:t原创 2016-05-16 11:32:05 · 1219 阅读 · 0 评论 -
Android 自定义View并添加属性
本文主要介绍如何为自定义的View添加属性以及属性的类型。代码示例定义见DropDownToRefreshListView,调用见DropDownToRefreshListViewDemo1、添加自定义View的属性文件在res/values中新建attrs.xml文件(文件名可另取,不过推荐用attrs.xml,可以将自定义属性都放入其中),内容为xml version=原创 2016-05-16 11:33:41 · 223 阅读 · 0 评论 -
IntentFilter的匹配规则
我们知道,启动Activity有两种方式,一种是显式调用,一种是隐式调用,显式调用这里就不多说,我们来说说隐式调用。隐式调用需要Intent能够匹配目标组件的IntentFilter中所设置的过滤信息。如果不匹配则无法启动Activity。IntentFilter中的过滤信息由action,category,data。为了匹配过滤列表,需要同时匹配过滤列表中的action,category,dat原创 2016-07-25 23:08:46 · 279 阅读 · 0 评论 -
RecyclerView里面嵌套RecyclerView注意事项
RecyclerView嵌套RecyclerView的条目,项目中可能会经常有这样的需求,但是我们将子条目设置为RecyclerView之后,却显示不出来。原因是:必须先设置子RecylcerView的高度。你要花精力确定出子RecyclerView里面条目的高度,然后从而确定子RecyclerView的高度,设置给子RecylcerView,这样做RecyclerView就可以正确显示出子Rec原创 2016-07-13 10:37:46 · 2203 阅读 · 0 评论 -
SharedPreference.Editor的apply和commit方法异同
主要区别在于: 1. apply没有返回值2. apply是将修改数据原子提交到内存, 而后异步真正提交到硬件磁盘, 而commit是同步的提交到硬件磁盘,因此,在多个并发的提交commit的时候,他们会等待正在处理的commit保存到磁盘后在操作,从而降低了效率。而apply只是原子的提交到内容,后面有调用apply的函数的将会直接覆盖前面的内存数据,这样从一定程度上提高了很原创 2016-05-21 14:35:31 · 317 阅读 · 0 评论 -
Android编程规范
Google Java Style 中文版Android Code Style中文版Android开发最佳实践以上两份文档都是针对Java代码方面的规范,对于Android应用来说,还有资源文件需要规范,因此,可参考Futurice公司整理的Android开发实践,中文版和英文版的地址分别如下:中文版和英文版在这个开源工程里,介绍了Gradle 配置、类库推荐、资源转载 2016-05-21 09:50:31 · 228 阅读 · 0 评论 -
使用Glide加载Gif文件,加载缓慢的问题
解决Glide加载Gif非常缓慢的问题Glide.with(MainActivity.this).load(url).asGif().into(imageView);解决办法:Glide.with(MainActivity.this).load(url).asGif().diskCacheStrategy(DiskCacheStrategy.SOURCE).into(image原创 2016-05-09 11:30:22 · 4617 阅读 · 0 评论 -
RxJava 详解
给 Android 开发者的 RxJava 详解参考RX详解转载 2016-04-23 11:27:20 · 275 阅读 · 0 评论 -
Handler的一些理解总结
Handler主要作用从其他线程访问UI线程一般在新的线程里发送信息,在主线程里处理消息。Message,MessageQueue,handler,Looper之间的关系Handler发送Message到MessageQueue(先进先出),Looper负责读取MessageQueue中的消息给Handler去进行处理。关于Looper的使用。如果希望Handler正常工作,必原创 2016-05-16 11:39:48 · 258 阅读 · 0 评论