![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
android
小小9575
老账号给合并没了无法找回,这个是新账号。
展开
-
java动态代理浅析
每次使用动态代理都会先查一下怎么用,这次想通过一个demo加深一下印象,所以有了这篇文章。在梳理过程中,我的总结如下:· 被动态代理的对象必须实现接口· 动态代理能调用的方法都是被代理对象的实现接口方法各位看官觉得有问题可以在评论区留言创建接口类这里我们创建了如下两个接口类public interface IBeProxyMod1 { void showLog1(); void showLog2(int code);}public interface IBeProxyMo原创 2021-05-25 17:24:46 · 153 阅读 · 0 评论 -
java中的基本反射回顾
java中的基本反射回顾想了解Hook技术反射永远是绕不过去的拦路虎,所以打算复习一下简单的java反射,仅以此文作为复习和熟悉markdown的语法。本文主要会涉及的反射实例如下反射类的私有属性反射类的私有方法反射类的私有构造方法反射内部类的私有属性反射内部类的私有方法首先准备一个被反射的类下面这个类包含了我们所有要反射的方法和属性public class ReflectTest { private String pStr = "普通类的私有属性"; public原创 2021-05-13 18:21:56 · 161 阅读 · 0 评论 -
MAC使用APKTool反编译apk修改版本号后重新打包
一、APKTool简介APKTool是GOOGLE提供的APK编译工具,能够反编译及回编译apk,同时安装反编译系统apk所需要的framework-res框架,清理上次反编译文件夹等功能。需要java支持二、APKTool安装1.安装APKTool需要两个文件,分别是apktool和apktool.jarapktool官方下载地址apktool.jar下载地址apptool官方下载地址可能由于网络原因下载失败,不过没关系其本质就是一个Unix可执行文件,我们可以自己创建一个控制台原创 2020-12-02 11:33:43 · 1496 阅读 · 0 评论 -
一个java反射的简单实例
被反射的类Studentpackage com.xiaoxiao9575.reflectdemo;import android.util.Log;import androidx.annotation.NonNull;/** * author: xiaoxiao9575 * email: xiaoxiao9575@126.com * csdn: https://blog.csdn.net/weixin_40998254 * github: https://github.com/原创 2020-06-03 10:40:49 · 605 阅读 · 0 评论 -
android实时高斯模糊
以前自己写过一个高斯模糊的工具类,是把bitmap进行处理,最近要用结果找不到了,写起来有麻烦,还好现在有相关开源框架,特此记录一下。框架地址使用方法Adding to projectAdd dependencies in yourbuild.gradle: dependencies { implementation 'c...原创 2020-03-20 16:14:06 · 2002 阅读 · 0 评论 -
Android如何正确保存一张图片到相册中
Android开发中我们经常会遇到在做生成海报并保存到相册中,用户在微信从相册选择图片分享类似这样的逻辑。那么如何正确保存一个Bitmap或流文件到本地相册呢?直接上正确的代码(后面也附了注意事项)/** * 保存图片 * @param mContext * @param bean */ public void savePic(Conte...原创 2019-12-17 11:12:00 · 1726 阅读 · 2 评论 -
android部分机型TimeoutException问题解决方案总结
android部分机型TimeoutException问题解决方案总结java.util.concurrent.TimeoutException这个问题涉及到OPPO的很多机型,华为的部分机型和少量的其他机型,导致这个异常的原因很多GC过程中CPU休眠、IO负载高、FinalizerDaemon线程优先级低等多种原因,反正就是没办法从根源解决。目前网上给出的解决方案有三种,下面我们一一列举。...原创 2019-12-11 18:14:57 · 2056 阅读 · 2 评论 -
Android通过广播获取其他应用安装,更新,卸载状态。
在我们在应用中推广其他应用或者需要监听广告推广apk安装状态时很有可能会用到获取应用安装状态的需求,那么如何实现呢?如下:1.写一个广播继承BroadcastReceiverpublic class PackageReceiver extends BroadcastReceiver { @Override public void onReceive(Context co...原创 2019-11-20 18:35:40 · 2508 阅读 · 1 评论 -
viewPager中Fragment生命周期踩坑
众所周知ViewPager会预加载,由于viewPager中预加载的fragment会完整的走一遍显示的生命周期,甚至setUserVisibleHint(boolean isVisibleToUser)这个方法也会走一遍,导致我们无法正确判断是否显示当前的Fragment,预加载的Fragment出现各种意想不到的问题(例如:WebView无法正常显示,用户看到才进行的逻辑提前执行等)。解决...原创 2019-11-20 18:13:44 · 493 阅读 · 0 评论 -
Android的Touch事件分发机制
最近看了一篇博客,通俗易懂,特别转载一下,希望广大作者能写出更好的技术博客。首先是原文链接:http://www.cnblogs.com/net168/前言 Android中关于触摸事件的分发传递是一个很值得研究的东西。曾不见你引入了一个ListView的滑动功能,ListView就不听你手指的指唤来滚动了;也不知道为啥Button设置了onClick和onTouch,其中谁会先响应...转载 2019-10-24 14:47:08 · 321 阅读 · 0 评论 -
Android8.0和8.1中使用service的坑
在最近的项目的中某项功能需要在项目启动的时候开启服务,由于从8.0系统开始google已经不允许我们启动后台服务了,所以所有的服务必须是前台的,而且创建通知栏的规则也进行了调整,channelid变成了必要的参数,于是我们一步一步的按照8.0的要求来,通知按照最新规则创建了,在服务oncreate(),onStartCommond()都调用了显示通知的方法,但是...在部分手机中还是会抛异常,这个...原创 2019-08-16 16:41:30 · 2371 阅读 · 2 评论 -
Only fullscreen activities can request orientation异常解决
最近由于要接入一个三方的jar将项目的compileSdkVersion和targetSdkVersion版本升级到了28(原来是26),测试人员在测试时发现android8.0.0版本的手机会莫名crash,crash的原因就是Only fullscreen activities can request orientation。在我项目的代码中由于用到了滑动返回,为了更好的效果在manife...原创 2019-08-16 16:03:43 · 255 阅读 · 0 评论 -
Android通过java代码模拟用户点击和长按
直接上代码,注释我写的很详细 /** * 模拟点击,限定View,无论坐标传什么View都会响应点击事件 * @param view 要点击的View * @param x x方向像素 * @param y y方向像素 * @param delayTime 按下和抬起时间差,用于区分点击和长按,不同定制系统可能...原创 2019-04-30 10:38:40 · 1484 阅读 · 2 评论 -
android如何获取第二天某个时间的时间戳
小知识点,不废话直接上代码 /** * 第二天早晨8点的毫秒时间戳 * @return */ private Long getMillisNextEarlyMorning() { Calendar cal = Calendar.getInstance(); //日期加1 cal.add(Calenda...原创 2019-04-16 10:26:31 · 2134 阅读 · 0 评论 -
Android与H5相互接口调用及Android端接口整理
近几年随着HTML5的功能越来越强大,H5页面的性能虽然稍差,单其灵活性很高,更新页面成本比原生小很多,一个页面可以被android和ios同时使用开发成本也比较低,所以移动端的开发已经不是单单的原生开发了,于是乎这就避免不了会进行Android和H5的交互。一、H5调用android接口。js 中调用Android的方法 //H5中调用Android的方法 f...原创 2019-04-11 15:40:33 · 5915 阅读 · 0 评论 -
JS接口通过完整路径跳转Activity
我们在给H5页面开接口时经常会遇到页面跳转的接口,而有的页面是不需要传递参数的,类似下面的代码每次都要写一个总感觉有些麻烦。 /** * 打开某某页面 */ @JavascriptInterface public void openDemoActivity() { mContext.startActivity(new Intent(...原创 2019-04-02 10:46:11 · 553 阅读 · 0 评论 -
android锁屏显示
首先简单说一下实现的思路,在MainActivity中启动一个服务,服务中注册锁屏广播监听,监听到锁屏状态改变启动LockScreenActivity作为锁屏页面,实现如下:首先在MainActivity的布局中写一个SwitchCompat用于开关锁屏。<?xml version="1.0" encoding="utf-8"?><RelativeLayout xml...原创 2019-04-04 10:39:39 · 4933 阅读 · 3 评论 -
android改变RecyclerView的滑动惯性
最近拿到一个需求,把列表的滑动速度变慢,让用户一点一点滑动,增加广告曝光时间,由于我们的列表用RecyclerView实现,所以做了滑动惯性的修改,由于很冷门,遂记录一下。 /** * 改变Recycler的滑动速度 * @param recyclerView * @param velocity //滑动速度默认是8000dp */...原创 2019-03-20 17:02:44 · 5431 阅读 · 6 评论 -
DragLayout的使用方法
DragLayout中的子view可以实现任意拖动,不影响本身的点击事件,其继承自RelativeLayout,所以所有的RelativeLayout的属性DragLayout都适用。用DragLayout可以轻易实现下面的效果:开源项目的github地址DragLayout一、接入方法: 1,在app的build.gradle添加allprojects { reposit...原创 2019-01-16 19:55:34 · 1155 阅读 · 0 评论 -
增大SwipeRefreshLayout容差
SwipeRefreshLayout对纵向的滑动事件很敏感,导致和内部嵌套横向滑动的控件两者冲突,解决方法自定义一个View继承SwipeRefreshLayout,可以参考:public class VerticalSwipeRefreshLayout extends SwipeRefreshLayout { private int mTouchSlop; // 上一次触摸时的...原创 2018-03-15 09:59:05 · 6516 阅读 · 0 评论 -
让开发者烦恼的Android7.0+的文件读取
从Android 7.0开始,一个应用获取file://格式的URI的话,应用会抛出FileUriExposedException。这个场景我在获取图片资源和应用内部下载更新安装都有遇到,特在此处做一份笔记,解决方案如下:1.在AndroidManifest.xml文件声明在AndroidManifest中声明一个provider。name(即类名)为android.support.v4.cont...原创 2018-03-14 14:43:44 · 9391 阅读 · 2 评论 -
基于Tinker的热修复
Tinker是腾讯推出的一种热修方案,下面介绍一下Tinker的接入步骤。一、在工程的 build.gradle添加远程仓库依赖 jcenterbuildscript { repositories { jcenter() } dependencies { // TinkerPatch 插件 classpath "com.tin...原创 2018-04-12 15:58:00 · 6768 阅读 · 0 评论 -
Intent启动Activity设置Flags
通过Intent启动Activity,可以设置Flag,也就是setFlags()方法,当然还有addFlags()方法(两者区别就是一个是设置,一个是追加,不难理解),通过设置不同的Flag以达到对任务战的处理和启动新Activity过程处理。下面整理了一下各种Flag的作用,目前只是初步整理很多标志还没有实际使用过,以后会进行完善。FLAG_ACTIVITY_SINGLE_TOP 如果设置成这...原创 2018-04-13 17:35:26 · 10968 阅读 · 0 评论 -
多渠道打包框架packer-ng-plugin简单使用
packer-ng-plugin是一个快速生成渠道包的工具,android使用的apk包的压缩方式是zip,与zip有相同的文件结构,在zip的Central directory file header中包含一个File comment区域,可以存放一些数据。File comment是zip文件如果可以正确的修改这个部分,就可以在不破坏压缩包、不用重新打包的的前提下快速的给apk文...原创 2018-04-13 17:17:07 · 7468 阅读 · 0 评论 -
快应用的开发环境和基本项目构建
最近一段时间随着RN(React Native)的发展以及微信小程序的普及,前端技术一下子风光无限,大有取代app的趋势,国内的主流手机厂商又联合推出了一个新型的应用生态---快应用。什么是快应用呢,让我们先看一下官方的解释。1. 快应用是基于手机硬件平台的新型应用形态,标准是由主流手机厂商组成的快应用联盟联合制定。2. 快应用标准的诞生将在研发接口、能力接入、开发者服务等层面建设标准平台,以平台...原创 2018-06-26 14:48:06 · 1261 阅读 · 0 评论 -
android开发中版本控制工具忽略哪些文件
在开发过程中我们都避免不了使用版本控制工具,较为常用的又git和svn,在创建一个项目后第一次提交项目需要配置哪些是需要上传到库中,哪些需要忽略,显而易见本地编译生成的文件和环境文件我们不需要入库,为了以后方便我在此记录一下,算是一个实用型笔记吧。首先是android studio设置项如下(不可能找不到的)下面就是忽略项了附上git和svn(小乌龟)的下载地址git下载地址svn下载地址...原创 2018-07-09 16:08:14 · 402 阅读 · 0 评论 -
ScrollView嵌套ListView或RecyclerView出现问题解决方法
ScrollView嵌套ListView,ListView显示不全的问题是一个老生常谈的问题,不建议嵌套有时候又身不由己呀,对于有些页面多布局和加header都不好用但是使用LinearLayout又不方便的时候,怎么看都是嵌套起来最简单,我们这些开发人员又能怎么办呢?那就怎么实现容易怎么来吧。解决ScrollView和ListView滑动冲突和只显示一行重新写一个View继承ListView,重...原创 2018-07-10 17:58:05 · 235 阅读 · 0 评论 -
Android基于局域网的socket通信
最近写了一个关于局域网socket通信的demo,代码和ui都很low,但是功能实现了,所以贴出来记录一下主要流程如下服务端:启动服务-->显示ip-->等待接收-->显示消息-->收到回复客户端:录入ip-->输入消息-->发送消息-->收到结果如下图选择服务端还是客户端显示服务端ip客户端输入ip发送消息服务...原创 2018-07-23 10:55:13 · 7286 阅读 · 1 评论 -
Android环形进度条
分享一个环形进度条供大家参考,项目地址https://download.csdn.net/download/weixin_40998254/10595267效果如图下面是该自定义进度条的代码,目前属于简陋版本,不过注释很详细,方便扩展。首先是自定View的代码/** * 作者:GJP on 2018/7/26 15:12 * 邮箱:xiaoxiao9575@126.c...原创 2018-08-10 11:25:11 · 3036 阅读 · 0 评论 -
Android自定义可拖动的悬浮布局
首先上效果图拖动这个自定义的View是继承RelativeLayout的,所以在写xml布局的时候直接当成RelativeLayout使用即可。由于在该类中注释的很清楚,在这里我就不再累赘直接上代码public class MyDragView extends RelativeLayout { private ViewDragHelper mDragger;...原创 2018-08-06 20:11:17 · 3439 阅读 · 0 评论 -
从几个实例来记忆Activity的生命周期
关于Activity的生命周期,有一张图可以很直观的表示出来,如下但是对于具体的应用场景,并不明确,所以通过一下几个实例来说明Activity的生命周期方法,假设有两个Activity为A和B。1.A启动跳转到B,B返回A。控制台打印结果进入AA=====onCreate()A=====onStart()A=====onResume()A跳转到BA=====onP...原创 2018-08-16 11:57:27 · 842 阅读 · 0 评论 -
android关键字特殊颜色显示的实现
在我们做开发的过程中,经常会遇到一段文字中间的几个字需要用特殊颜色或者大小等显示,有很多刚入门的开发没有头绪,下面我介绍几种常用的实现方法,首先上效果图:一、多TextView方式这种方式的好处是思路简单,坏处是如果这段文字不止一行布局很是困难,所以本地写死的简短文字可以采用,直接xml写就行了。<LinearLayout android:layout_wid...原创 2018-08-27 19:58:52 · 908 阅读 · 0 评论 -
Android动态请求权限的工具类(转载、非原创)
Android动态请求权限的工具类Android 6.0(SDK 23)以上才需要用到动态权限。之前已经写过好多次关于Android动态权限的文章,但是后期发现每次都要进行复制粘贴,还要修改,还不如写一个自己的工具类,那就方便多了!网上也有很多关于动态权限的工具类,还有一些框架, 但是我发现有些使用还是挺麻烦,我感觉还是自己这个动态权限的工具类是非常好的。一.我的动态权...转载 2018-09-18 11:19:29 · 498 阅读 · 0 评论 -
图片合成工具类(BitmapMergeUtils)
package com.reader.xdkk.ydq.app.util;import android.graphics.Bitmap;import android.graphics.Bitmap.Config;import android.graphics.Canvas;import android.graphics.Matrix;import android.graphics.R...原创 2018-10-16 16:22:06 · 754 阅读 · 0 评论 -
关于自定义View的drawText字体测量
当我们在Canvas上drawText的时候会发现和所写的文字大小和我们给Paint所设置的不一样,导致我们无法精准的对齐高度,下面我们来看一下问题出在了哪里。首先上图中文英文首先getFontMetrics()我们可以获得文字的实际占用位置的各个高度基线(以500xp的文字为例),各个属性不解释,直接看图就能看出来。Paint.FontMetrics fontMetrics ...原创 2018-11-13 14:56:08 · 561 阅读 · 0 评论 -
Android工程依赖和依赖包依赖冲突解决办法
例如我们需要引用compile com.jph.takephoto:takephoto_library:4.0.3结果由于引用包的glide版本和我们本身工程的glide版本不一致,导致我们自身的glide被覆盖,如何能不覆盖呢,如下compile('com.jph.takephoto:takephoto_library:4.0.3') { exclude group: '...原创 2018-12-17 15:59:11 · 1471 阅读 · 0 评论 -
Android冷启动LaunchActivity部分
创建一个LaunchActivity不要用setContentView()方法进行渲染(耗时),通过Theme添加背景样式即可public class LaunchActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) {原创 2017-11-23 13:52:35 · 7214 阅读 · 0 评论