- 博客(180)
- 资源 (6)
- 收藏
- 关注
原创 Android解耦-基于Google AutoService SPI的轻量化快速开发框架
参考基于Google AutoService SPI的轻量化Android快速开发框架。
2024-01-01 09:49:02
507
原创 2021-07-05android 简单的自定义switch(换图片)
用ImageView和Selector来实现:Java文件:public class CustomSwitch extends AppCompatImageView{ public CustomSwitch(Context context) { this(context,null); } public CustomSwitch(Context context, AttributeSet attrs) { this(context, attrs,0
2021-07-05 14:54:21
1768
1
原创 android studio 编译打包 出现Could not download xxx.jar解决方案
在project 根build.gradle里修改maven代理: repositories { maven { url 'https://maven.aliyun.com/repository/public' } maven { url 'https://jitpack.io' } maven { url 'https://maven.aliyun.com/repository/google' } }
2021-06-21 12:23:29
2880
原创 android recyclerView行间距、列间距太大、不对称的解决
发现的问题:1.当List排行是水平滑动时,行间距很大2.当List排行是竖直滑动时,列间距很大解决方案:1.item的布局 改为android:layout_width=“wrap_content”android:layout_height=“match_parent”2.item的布局 改为android:layout_width=“match_parent”android:layout_height=“wrap_content”...
2021-06-09 17:33:55
2590
1
原创 MVVM框架下横竖屏切换fragment数据保存问题
MVVM框架下横竖屏切换Activity销毁重建,Fragment也会销毁重建。但是数据操作保存不方便。所以采取fragment保存状态:在fragmenton Create()中使用setRetainInstance(true);在MainActivity做判断不要重复创建主页fragment...
2021-06-09 12:29:53
673
转载 android studio 自定义生成BuildConfig文件,形成打包配置
转自自定义生成BuildConfig文件BuildConfig文件的位置:你的工程目录-build-generated-source-buildConfig-debug-包名-BuildConfig.java我们知道这个是工具生成的文件我们并不能手动更改,我们如何去改变它呢?第一步,打开我们module的Gradle看到“我添加的这一栏”,我们先这样写,规则是buildConfigField “String”,“testId”,“1234567” 分别表示buildConfigField 默认
2021-02-22 16:33:04
6548
转载 Android 一共有多少种动画
参考Android 一共有多少种动画?准确告诉你!动画种类Android 动画可以归纳为以下几种:视图动画(View 动画)帧动画(Frame 动画、Drawable 动画)属性动画触摸反馈动画(Ripple Effect)揭露动画(Reveal Effect)转场动画 & 共享元素(Activity 切换动画)视图状态动画(Animate View State Changes)矢量图动画(Vector 动画)约束布局实现的关键帧动画(ConstraintSet 动画)A
2020-12-01 11:31:19
774
1
原创 android H5页面框架及内存泄漏解决办法
H5页面框架Android:一个实用的WebView浏览网页,可直接使用webView造成的内存泄漏解决办法:Android H5页面内存溢出优化如果应用还需要成为最高级的系统应用,即在androidManifest中使用了android:sharedUserId=“android.uid.system” 的应用,还需要hook这个webView,否则会崩溃。在自定义的Application中的onCreate()方法中 if (!ProcessUtils.isMainProcess())
2020-11-17 17:20:42
1307
原创 Android aidl跨进程通讯中发现客户端调用服务端方法失效的问题
记录一个坑:在调试aidl SDK的时候发现客户端app调用我的aidl接口时候,有的接口总是调用不正确,本来是调用A接口,却实际调用却是B接口。仔细检查了,各个接口名称没错。aidl文件在最开始是固定的,但是接口在后面有增有减,就导致了服务端的aidl接口与客户端的aidl接口数量和顺序上都有差异了。正是这些差异,导致了问题出现。修改顺序后,一切恢复正常。就是顺序引起的错误。解决办法就是 两端的aidl接口文件应当完全一致...
2020-11-17 16:12:48
1390
原创 Android Studio 报错 Invalid Gradle JDK configuration found.
Android Studio 报错 Invalid Gradle JDK configuration found.解决方案:找到.idea路径下的gradle.xml修改<option name="gradleJvm" value="JDK" />为<option name="gradleJvm" value="1.8" />sync一下就好啦
2020-10-29 09:45:16
34283
19
原创 android activity主题
记录一下我常用的主题全局activity主题: <style name="MyAppTheme" parent="Theme.AppCompat.DayNight.NoActionBar"> <!-- Customize your theme here. --> <item name="android:typeface">monospace</item> <item name="android:wind
2020-09-15 10:14:28
256
原创 android透明主题引起的快速点击activity触发退到桌面
最近在项目中遇到个问题:在主页打开使用透明主题(设有 <item name="android:windowIsTranslucent">true</item>)的activity时,由于有跳转动画的存在,动画完成之前快速点击主页的其他图标,透明主题activity就会退到后台。这个问题是在启动过程中出现的,在布局拦截没有用。原因应该是新的activity窗口生成前,触发触摸事件,导致触摸事件传到上一个窗口去了。处理方式有两种:1.启动过程中屏蔽触摸如何限制触摸屏
2020-09-15 10:08:14
1841
转载 android 混淆
参考Android Studio 代码混淆配置,rxjava混淆遇到的坑mark一下android studio 打包release出现的错误
2020-08-31 13:58:15
166
转载 安卓Activity和Fragment的OnActivityResult区别
参考自Activity和Fragment的OnActivityResult的回调问题我们知道,Activity和Fragment都有onActivityResult方法,那么两个有啥区别呢?即:什么情况下会执行Fragment的OnActivityResult方法,什么情况下又会执行Activity的OnActivityResult方法?真的执行了Activity的OnActivityResult方法之后,又怎么能执行Fragment的OnActivityResult方法?经过查看源码发现fra
2020-07-22 11:29:54
1182
转载 android写一个Rxjava
转自Android 写一个属于自己的Rxjava(一)Android 写一个属于自己的Rxjava(二)Rxjava的使用重点在于分清楚:上游发射事件,下游接收事件只要分清楚哪些操作符是作用在上游,哪些作用在下游,在此基础上对上游或者下游封装多一层就成了Rxjava。源码地址CustomObservable为了对比rxjava,所有的类名前面都加了Custom表示自定义的意思定义两个下游的接收事件的基类(观察者):CustomEmitter和CustomObserver ,其实二者是基本一样
2020-07-20 17:32:09
222
转载 android 制作 .9图
转自Android Studio制作.9图片,看这一篇就够了一、.9.png图片概念这是安卓开发里面的一种特殊的图片这种格式的图片在android 环境下具有自适应调节大小的能力,不会失真(1)允许开发人员定义可扩展区域,当需要延伸图片以填充比图片本身更大区域时,可扩展区的内容被延展。(2)允许开发人员定义内容显示区,用于显示文字或其他内容比如聊天界面中的聊天气泡使用的就是.9图片,如下图:当然做启动页的时候,放了一张背景图,由于安卓手机屏幕太多样,导致在有些手机上,启动页背景图会变形
2020-07-09 17:12:45
2036
转载 Android Bitmap性能优化
参考Android性能优化:Bitmap优化Android 性能优化:手把手教你优化Bitmap图片资源的使用
2020-07-07 17:27:49
465
转载 计算机操作系统基础知识
参考操作系统常见面试题整理(Most Common Problems in Interview for Operating System)计算机操作系统——面试问题集锦
2020-06-29 17:13:12
276
转载 计算机网络基础知识
转自计算机网络(面试必备知识点)第一章 概述互联网的组成以及几种网络传输方式边缘部分:由所有连接在互联网上的主机构成。这部分是用户直接使用的,用来通讯和数据共享。计算机之间的通讯有两种,一种是客户-服务器方式,一种是P2P方式。核心部分:由大量网络和连接这些网络的路由器组成。这部分是为边缘部分提供服务。核心中起重要作用的是路由器,他的作用是分组交换,转发收到的分组。数据交换的几种方式和特点: 1.电路交换,需要进行建立连接、通话、释放连接三个过程。资源独占,线路传输的效率较低。 2.分组交
2020-06-29 16:03:57
922
转载 Java成员式内部类、静态内部类、匿名内部类和局部内部类
参考Java静态内部类、匿名内部类、成员式内部类和局部内部类放在一个类的内部的类我们就叫内部类。内部类可以是静态(static)的,可以使用 public、protected 和 private 访问控制符,而外部类只能使用 public,或者默认。成员式内部类在外部类内部直接定义(不在方法内部或代码块内部)的类就是成员式内部类,它可以直接使用外部类的所有变量和方法,即使是 private 的。外部类要想访问内部类的成员变量和方法,则需要通过内部类的对象来获取。public class Out
2020-06-29 11:36:37
224
转载 AsyncTask异步任务机制
转自AsyncTask异步任务机制AsyncTask 内部的实现机制1.AsyncTask 是一种轻量级的异步任务类,底层用到了ThreadPoolExecutor(线程池),封装了Thread 和Handler,可以在线程池中执行后台任务,然后把执行的进度和最终结果传递给主线程并在主线程中更新UI。2.AsyncTask 内部的实现机制是运用了 ThreadPoolExecutor(线程池),该类产生的 Thread 对象的生命周期是不确定的,是应用程序无法控制的,因此如果 AsyncTask 作为
2020-06-19 11:42:54
439
转载 Android消息机制之HandlerThread
转自Android消息机制之HandlerThread概述HandlerThread 本质是一个线程,它继承自 Thread。不过特殊的是,它内部封装了 Handler 和 Looper 来进行消息的分发、循环以及处理。那么 HandlerThread 产生的背景是什么呢?想象一种场景,我们知道,耗时任务需要在子线程中进行,而线程的创建和销毁是非常消耗系统资源的,如果当任务 A 执行完了后,如果还需要执行任务 B, 那么就还需要创建一个新的子线程进行。这样性能问题就会凸显。为此,可以子线程中创建一个轮
2020-06-19 11:33:13
281
原创 android 横竖屏切换时候Activity的生命周期
1、设置Activity的android: configChanges=“orientation”时或不设置Activity的android: configChanges时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次。2、设置Activity的android: configChanges=“orientation|screenSize”时,切屏不会重新调用各个生命周期,只会执行onConfiguration方法...
2020-06-11 20:20:35
170
原创 android framework源码位置
开发android程序时,经常用到android.app,android.os这样的包,那么这些包究竟在机器的哪个目录下呢?经过对机器system路径下的地毯式搜索,我终于找到了,就在framework.jar中,详细路径是system/framework/framework.jar想看源码的童鞋可以用adb 命令行把它pull下来,比如我要pull到电脑D盘的pull文件夹,打开命令行工具,执行adb pull system/framework/framework.jar D:\pull然
2020-06-01 10:28:47
1587
转载 EventBus原理简介
转自Android Eventbus原理简介一、简介EventBus是一款事件总线开源库,在Activity和Fragment、线程、服务等之间高效传递事件。有如下几个有点:1、传递事件更高效2、代码看起来更简洁3、运行效率高4、jar包小 50k左右5、可以避免各种复杂的生命周期依赖关系二、使用使用步骤:1、定义一个数据model,比如一个bean类,作为传递的数据类型2、在需要观察接收数据的类中注册:EventBus.getdefault().register(this);3、
2020-05-12 17:28:07
9116
1
转载 android 架构 MVC 、MVP、 MVVM对比
转自Android中的MVC、MVP、MVVMMVCMVC的全称是Model-View-Controller,也就是模型-视图-控制器。在Android中View层一般由XML布局文件充当。在Model层中我们会进行一些数据处理的工作,比如网络数据请求、数据库操作等。Controller层通常由Activity、Fragment充当,并在其中进行界面、数据相关的业务处理。可见在Android中,作为Controller的Activity或Fragment主要起到的作用就是解耦,将View和Mod
2020-05-12 15:58:08
2269
原创 反编译之系统级应用(apk和被拆分的odex合并)
Android的存储中有很多odex文件,相对于APK中的dex文件而言这个odex有什么作用呢? 如果你仔细观察会发现apk和odex文件名是一一对应的,同时那些对应的apk文件解压后发现其中没有了dex文件。这样做可以使其厂商保证一定的反盗版,因为没有没有dex文件的apk是无法正常安装的,而厂商直接将odex和不完整的apk文件放到手机ROM固化到/system/bin中可以让一般用户无法正常导出使用。odex 是经过优化的dex文件,且独立存在于apk文件。odex 多用于系统预制应用或服务。通过
2020-05-12 12:01:37
2998
2
转载 android 组件化开发——多个Module的Application初始化共存问题
参考Android多module初始化applicationAndroid-组件化如何处理多个ModuleApplication共存问题?一个重点:在Application里,attachBaseContext()方法的执行顺序是在onCreate()之前的组件化的目的是为了业务解耦,每个业务模块需要不同的功能,例如车辆详情模块需要第三方分享,城市定位模块需要百度地位等。有些特殊功能的初始化需要在 Application 中去做,但是这些功能并非全部业务组件都用到的东西,放到 主工程Applic
2020-05-11 17:17:45
7133
3
转载 Android 应用内多进程
转自Android应用内多进程的使用及注意事项 一个应用默认只有一个进程,这个进程(主进程)的名称就是应用的包名,进程是系统分配资源和调度的基本单位,每个进程都有自己独立的资源和内存空间,其它进程不能任意访问当前进程的内存和资源,系统给每个进程分配的内存会有限制。如果一个进程占用内存超过了这个内存限制,就会报OOM的问题,很多涉及到大图片的频繁操作或者需要读取一大段数据在内存中使用时,很容易报OOM的问题,如果此时在程序中人为地使用GC会严重影响程序运行的流畅性,并且有时候并没有什么卵用,多数时候我们可
2020-05-11 14:34:40
1232
原创 android module 打jar包
首先要确保你的Module是Library类型的,即在那个Module的build.gradle修改//apply plugin: 'com.android.application'apply plugin: 'com.android.library'并在 defaultConfig 注释掉applicationId正文开始:1.点击 android studio 右侧Gradle,选择你要打包jar的Module(我的是opencv),然后点击Tasks-other2.根据你要Debu
2020-05-09 19:29:02
698
1
转载 多线程同步的synchronized和volatile
参考static synchronized 方法的多线程访问和作用谈谈volatile关键字的用法ReentrantLock 、synchronized和volatile比较多线程同步方法有三:1.在需要同步的方法的方法签名中加上 synchronized关键字2.使用synchronized关键字对需要进行同步的代码块进行同步3.使用java.util.concurrent.lock包中Lock对象(JDK1.8)synchronized原理(1)synchronized关键字是通
2020-05-09 11:32:39
363
原创 android studio 添加 Module 并 引用Module方法
废话不多说,直接开始:1.点击File-New-New Module-next …至于什么类型的module可以自己选,给自己的module起个名字,比如test2.去主工程app目录下的build.gradle,添加对这个Module的引用。dependencies { implementation project(path: ':test', configuration:'default')}3.去Module下的build.gradle,修改这个Module的属性为Library库:注
2020-05-08 20:17:49
3906
转载 android 设计模式——单例模式
参考自设计模式:单例模式 (关于饿汉式和懒汉式)枚举与单例模式利用枚举实现单例模式定义单例模式是比较常见的一种设计模式,目的是保证一个类只能有一个实例,而且自行实例化并向整个系统提供这个实例,避免频繁创建对象,节约内存。单例模式的应用场景很多,比如我们电脑的操作系统的回收站就是一个很好的单例模式应用,电脑上的文件、视频、音乐等被删除后都会进入到回收站中;还有计算机中的打印机也是采用单...
2020-04-30 16:39:42
180
转载 android 逆向开发必备——反编译工具
转自知乎专栏反编译apkadx-gui反编译在遇到jadx-gui反编译之前,都是使用apktools进行反编译的,apktools有些是反编译不出来的,而且……难用……想知道jadx-gui有多强?它都可以反编译淘宝、微信代码,是不是够强了。下面我们就来看看它是如何反编译的;jadx-gui是开源的,项目地址:项目地址mac电脑:打开终端,切到某个路径下,输入以下命令:git c...
2020-04-23 11:40:19
833
原创 关于循环的理解
for循环究竟是怎么执行的?这里用C语言看看#include <stdio.h>#include <stdlib.h>int main(){ int n = 10; for (int i = 0;i <n;i++) { /* code */ printf("i==%d\n",i); } ...
2020-04-20 11:56:43
744
转载 Android学习自定义View目录
自定义控件系列目录实战:Android自定义View实例教程~自定义可拖拽评价进度条一「完全自定义」Android自定义View实例教程~自定义可拖拽评价进度条二「完全自定义」...
2020-03-30 15:04:56
263
转载 Android--自定义控件方法解析
转自Android–自定义控件解析(二)开篇上篇已经讲了自定义属性的定义和获取,还有如何在布局文件添加我们的自定义控件。这几乎是自定义控件中必不可少的两步,而onMeasure()、onDraw()方法如果是在我们讲的TopBar这样的继承了已有View的子控件的(如 RecyclerView),只需修改几个属性的控件中使用是可以不做的。onLayout()就更不必说了,它是来设置子View的...
2020-03-27 09:26:33
221
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人