- 博客(55)
- 资源 (11)
- 收藏
- 关注
原创 java实现zip压缩和解压缩的几种方式
最近在做项目打包相关的工作。需要用 java 把一个有很多文件的目录压缩为zip,或者解压aar,抽取里面的文件。所以需要用到java实现的打包zip的工具类。网上搜了一下,大致都是java自身的ZipFile实现的。实现代码我汇总了,见如下文件:BaseMyProject/ZipByJava.java at master · chenglin198751/BaseMyProject · GitHub但是吧,我测试了下性能,发现,不理想,打包一个一千个文件的项目,在我的台式机 i3 上面,大概需要3
2022-05-17 22:50:32
687
原创 U8打包把dx替换为d8
本文所需文件下载地址:https://download.youkuaiyun.com/download/wei1583812/21059961最近一直在搞公司的一套U8打包系统,虽然我的主业不是干这个,但是公司交代的工作,还是得尽心干好的。接入oppo渠道时,打包时遇到了如下报错:Uncaught translation error: com.android.dx.cf.code.SimException: invalid opcode ba (invokedynamic requires --min-s
2021-08-13 17:26:53
1292
3
原创 制作了一款支持android v1v2签名的渠道打包工具
5年前写过这篇多渠道打包的文章:https://blog.youkuaiyun.com/wei1583812/article/details/44463697,现在一晃眼5年过去了,v2签名很普遍了,这篇已经不适用了。最近看了腾讯出品的https://github.com/Tencent/VasDolly,感觉很好用。就封装了一下,贡献给大家。项目见:https://github.com/chengl...
2020-01-19 19:09:46
731
原创 HandlerThread:让一个线程不死且拥有不断处理事情的能力
如果有这么一个需求,需要发送socket消息来通信,但是发socket消息不能阻塞UI线程,需要放到别的线程发。此时HandlerThread就派上大用处了。HandlerThread的作用就是让一个线程不死并且具备不断处理事情的能力。当然,你也可以用Loop+Handler+thread自己来实现一个这样的东西。但是既然安卓系统给做好了HandlerThread让咱们来用,何必重复造轮子呢。代...
2019-06-25 14:32:01
1223
1
转载 Android Studio配置使用阿里云的镜像
由于墙的存在,AS开发者在开发时,总是遇到下载库或者升级卡着不动的情况。如果有个代理镜像服务器,可以帮我们从国外下载,然后再映射到国内服务器该多好。感谢阿里,提供了镜像服务器。以下为转载,转载自:https://www.jianshu.com/p/b038bd95444=============================================================...
2019-06-11 10:21:10
19966
2
原创 强烈建议为你的Android项目加上 largeHeap 属性
如上图,Android项目的Application节点里面有个属性叫做 android:largeHeap="true" 。此属性的意思是为你的安卓项目申请更大的内存。我在之前的开发中,总是刻意把此属性设置为false,因为我自以为是的认为,我要为我的应用设置严格的内存,不额外获取更大内存。后来慢慢的看的资料多了,才发现我这种自以为是的想法是错的。才知道安卓之所以设计 android:la...
2018-12-07 14:35:12
1542
5
原创 Java CRC32的实现和应用
CRC检验原理实际上就是在一个p位二进制数据序列之后附加一个r位二进制检验码(序列),从而构成一个总长为n=p+r位的二进制序列;附加在数据序列之后的这个检验码与数据序列的内容之间存在着某种特定的关系。如果因干扰等原因使数据序列中的某一位或某些位发生错误,这种特定关系就会被破坏。因此,通过检查这一关系,就可以实现对数据正确性的检验。有这么一种应用场景,应用上线后,做ABTest,一半用户能用...
2018-11-29 11:40:38
1937
原创 关于crash " Only fullscreen activities can request orientation "来源及解决方案
最近遇到一个奇怪的bug。就是:当targetSdk>=27 并且android SDK版本是26(Android 8.0.0)或者27(Android 8.1.0)时,此时在应用中,如果把一个Activity的主题设置为透明并且屏幕方向固定时,就会crash,如下:java.lang.IllegalStateException:Only fullscreen activities ca...
2018-09-20 17:39:04
543
原创 java 反射常用记录
public class TestHelper { private String value = "123"; private void test1(String name) { Log.v("tag_2", "反射方法测试 private " + name); }}1、反射一个private 变量值,并再次为其赋值: try ...
2018-06-04 15:44:12
283
原创 Android Studio 光标莫名其妙加粗后,与 insert 键相反的问题
今天在写代码时,突然光标加粗了,而且我怎么按 insert 键都不行。而且当你点击 insert 键时,会发现,光标变为正常模式,但此时是insert 模式,回车死活不生效,输入会删除后面的字符;再按 insert 键,输入恢复正常了,但是光标确是加粗的。怎么调都不行,就是与 insert 是反着的。 最后费了很大的功夫,才找到解决方法: File - Settings - Editor - Ge...
2018-05-10 19:15:15
2212
4
原创 Android 实现压缩图片到任意尺寸
之前写过一篇博客,讲的是如何利用Picasso 来实现压缩图片到任意尺寸:https://blog.youkuaiyun.com/wei1583812/article/details/55271209后来我用安卓的原生方法实现了压缩图片到任意尺寸,比picasso 要快很多,且不用导入picasso 。不过picasso 也是用的我说的这种方法,只不过是因为它在处理中中转了几层,导致慢了一些。话不多说,贴代码...
2018-05-10 11:19:13
1874
原创 gradle记录
implementation (com.github.bumptech.glide:okhttp-integration:4.6.1) {//排除掉自身对okhttp 库的依赖 exclude group: com.squareup.okhttp3, module: okhttp}implementation (com.github.bumptech.glide:okhttp-integrati...
2018-03-26 19:53:04
192
原创 Android 监控应用中所有Activity 的生命周期
众所周知,我们可以在Activity 里面监控当前Activity 的生命周期,比如onResume() ,onCreate() 等等。如果想监控所有Activity 的生命周期呢?你可能会说那在BaseActivity 里面去写啊,用集合记录。当然这能做到,可是有没有更简单的办法呢?其实我们可以在Application 的onCreate() 里去注册一个监听:public class
2017-12-21 11:28:27
1394
原创 Android最简单的实现View拖拽跟随手指移动效果
今天想实现这个功能,但是网上搜索代码,都是利用setPadding,setMargin 等方法去实现的,这在Android 4.0 以前是没问题的,但是,Android 4.0 后系统已经提供了更简单的方法给我们用了,就是setTranslationX() 和setTranslationY() 。这两个是View的属性方法。现在我就用这两个方法实现一个View可以跟着手指移动拖拽的效果。代码非常非
2017-08-21 12:36:11
17996
9
转载 分享一款Android开源的仿IOS滚轮效果的控件
前几天发现了一款写的非常不错的安卓Android实现滚轮滑动选择效果的控件,滚动效果非常非常流畅。作者提供了很多属性可以设置,完全可以满足日常使用。我个人用着很顺手,在这里记录一下,以后可以继续使用。项目地址:https://github.com/Carbs0126/NumberPickerView在这里向作者致敬!注:picker.setWrapSelectorWheel(false);//设置...
2017-08-16 15:32:58
3817
原创 Android 实现快速高斯模糊(毛玻璃)效果算法
先上代码:https://github.com/chenglin198751/BaseMyProject/blob/master/app/src/main/java/utils/FastBlurUtil.java如果下面的代码有找不到的方法,那么可以去这么项目里找,完整的项目地址是:https://github.com/chenglin198751/BaseMyProjectJava已经有
2017-08-13 19:13:58
1998
原创 Android 利用RecyclerView 的SnapHelper 实现滚轮效果
在support V4的最新包中,谷歌加入了一个叫做SnapHelper的辅助类。这个类的作用是可以让RecyclerView实现一些类似ViewPager的效果。我大致试了下,可以利用这个类实现滚轮选择效果。如果所示:核心代码如下: mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view);
2017-08-10 01:13:21
6171
原创 优化Android 应用启动速度(应用启动慢的真正原因探究)
开门见山告诉答案:一个Android 应用真正启动慢的原因是在Application 里面做了耗时的操作。把这些耗时的操作找出来并且new Thread 放到异步线程里面,那么问题就解决了。下面看我的优化过程,这是我在未优化之前的Application的onCreate() 方法里面做的事情:@Overridepublic void onCreate() { mU
2017-08-02 17:02:01
12071
原创 Android实现自定义Toast,并且防止重复显示
我们在用系统的Toast的时候,总是会发现连续多次点击按钮,就会一直不停的弹,完全停不下来的节奏。那能不能无论点击多少次,就只弹一次呢?而且我们还想自己定义Toast样式,系统默认样式太难看了。我就看了下Toast的源码,源码很简单,大概看了十来分钟,就知道了如何自定义。下面贴的是自定义的代码,代码很简单:/** * Created by chenglin on 2017-7-24.
2017-07-27 10:53:41
2195
原创 使用Android Studio 自带的monitors查找App CPU 使用率过高的原因
最近遇到一个问题,就是我们的应用多打开几个页面,直接就卡死了。一般一个应用卡死,无外乎是CPU使用过高,或者内存消耗过大。如果是内存泄露,那么至少几十个上百个Activity泄露才会导致卡死不动。而我们的应用是多打开几个页面就卡死了,那我猜测是CPU 消耗过高引起的。什么情况下会消耗CPU 呢,就是大量的运算。那么此时目标就很明确了。就是去查找是哪个Activity或者哪个方法有一直不停止的运
2017-07-08 19:38:25
14737
原创 Android中自定义LayoutInflater.Factory实现全局替换系统控件(比如TextView,EditText等)
我已写了DEMO放到github , 地址:https://github.com/chenglin198751/InflaterFactoryDemo/tree/master我们有时会遇到这么一个需求,就是要把全局的TextView 、 EditText 替换为自定义的TextView、EditText(比如自定义字体、或者自定义emoji表情时)。如果手动一个个去替换,那不累死了。那有没有一
2017-07-08 17:33:18
1555
原创 Android中打开系统相机连续拍多张图片,并得到图片地址
1、打开系统相机: Intent intent = new Intent(); intent.putExtra("return-data", false); intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE_SECURE);
2017-04-27 18:21:29
4625
1
原创 Android中可以用随意替换指定的View(比如在某个位置展示空页面,无网页面之类的)
Android中要在某个地方展示空页面,或者无网页面,开发者一般都是直接覆盖个页面上去,在需要的时候显示,不需要隐藏。这样就扰乱了代码的逻辑性。今天写了个小工具,可以随意指定在某个View上展示空页面。代码很简单,如下,相信很快就能看明白:public class ReplaceViewHelper { private Activity mActivity; protected
2017-03-30 15:20:49
6312
原创 Android 文本框实现类似笔记本那样的带行线的效果
这是一个小伙伴写的(他也是抄的,作者已佚名),我觉得写的挺好,自己又改了改,在此记录一下:public class LinedTextView extends TextView { public LinedTextView(Context context) { super(context); } public LinedTextView(Context
2017-03-23 14:53:03
1154
1
转载 Android EditText 使用InputFilter区分中文英文字符长度
有时产品经理提的需求,要区分中文英文字符长度,一个中文字符代表两个英文字符,输入时要区分长度。比如40个中文,就是80个英文字符。这种需求,EditText 的length属性就不能用了。我查了一下,网上已经有人用EditText filter 实现了。特此记录一下(转载自http://blog.youkuaiyun.com/satanzw/article/details/41051975):/** *
2017-03-21 11:30:36
2760
1
原创 Android获取当前APP的data路径,以及获取存储卡上的data路径,obb路径
现在的Android应用将文件放到SD卡上时总是随便创建一个目录,那这样有个问题就是卸载应用时,这些垃圾还留在用户的SD卡上导致占用存储空间(猎豹清理大师这样的工具由此应用而生)。其实Android系统已经帮我们提供了相关的API可以将文件缓存到data/data目录下,当APP卸载时,这些垃圾文件也跟着自动卸载清除了。只是很多开发者不知道而已。我在这里记录一下,以后谁搜到了就可以使用了,当然,记
2017-03-09 10:32:51
17304
原创 Picasso的用法记录
1、把图片下载到本地并且缓存起来,使用场景是预加载某张图片时: Picasso.with(this).load(Url).fetch(new Callback() { @Override public void onSuccess() { } @Override
2017-03-07 11:13:31
612
1
转载 Android实现竖直显示的TextView【转载】
转载自:http://hz-chenwenbiao-91.iteye.com/blog/2089851 感觉写的很好,特此转载记录下。但是我发现这个哥们也是转的,原文出处已经找不到在哪儿了。public class VerticalTextView extends View { public static final int LAYOUT_CHANGED = 1; pr
2017-02-23 19:03:41
3980
原创 Android中利用Picasso实现图片压缩指定任意尺寸
之前做项目时,有个需求是指定照片压缩到任意尺寸上传给服务器。当时我自己写了个图片压缩方法,但是不够完美,小问题不断。后来看到了神器Picasso不光能加载网络图片,还能以任意尺寸加载本地图片。于是我想,既然Picasso能任意尺寸加载本地图片,那它肯定能任意尺寸压缩图片了。仔细找了下,找到了对应的方法,我刚才测试了一下,发现确实可以满足我的需求,而且图片质量还很不错。在这里特此记录一下。Pic
2017-02-16 19:52:31
6307
原创 Android模仿圆形圆圈倒计时实现
现在看到很多软件的开屏图都是画一个圆圈,从0度画到360度,然后倒计时三秒。感觉挺好玩,刚才忍不住写了一个,贴一下代码:
2017-01-25 13:41:17
5068
原创 模仿微信小程序在Android手机的最近程序打开列表
微信今天上线了小程序,我也体验了一把,发现微信小程序在Android手机的最近打开程序列表里面,是一个单独的任务,就像和微信没有关系一样。如图所示:本着一名程序员的好奇心,看到好玩的东西都想找到怎么实现的,我就花了点时间找到了实现方案。实现方案有两种,先看第一种:public class MainActivity extends BaseActivity { @Ove
2017-01-09 17:05:11
2764
2
原创 微信和QQ按back键不松开就最小化之原因探秘
大家有没有发现,Android版微信和QQ,按back键的时候,只要按上(还没松手),程序就最小化了。而别的APP都是要松开back键时才最小化。如果是普通人使用起来肯定没感觉,但是作为一名安卓程序员,我不能忍啊,我想知道为什么微信QQ和别的APP不一样啊。我疑惑了很久,今天有时间,决定揭开这个秘密。我刚开始猜测,是微信注入了某些代码到系统里,可以监听back键的down和up事件,但是一想,...
2017-01-09 15:21:05
862
原创 ViewPager模仿弧形切换动画(备忘)
最近有空,写了个ViewPager切换的动画,模拟的是弧形切换,就是左右滑动时的弧形动画。这里简单记录一下,以后用到就不用再写了。 public static class ZoomArcPageTransformer implements ViewPager.PageTransformer { private static final float ANGLE_MAX
2017-01-04 18:07:35
1044
原创 Android 中最简单的实现 HTML(H5)调用native原生页面的方法
先简单描述一下Android 中最简单的实现 HTML调用native原生页面的流程:1、先让Activity注册实现schema2、Activity实现可以接收schema传过来的参数的方法3、浏览器在shouldOverrideUrlLoading()方法中实现拦截URL判断
2016-12-08 17:51:14
10512
1
原创 Android多进程时Application初始化问题,大坑
之前在做项目时,遇到一个大坑,就是我的APP 的Application 的onCreate方法,竟然执行了好几次,这就导致我在onCreate里面做了一些初始化的操作被重复执行了,导致奇怪的bug产生。后来冷静下来分析一下,才发现有一些第三方组件,比如百度推送之类的,它们是单独开了一个进程,那么每个进程会自己初始化自己的Application,那自然onCreate方法会多次执行。准确的说就是你的...
2016-11-29 17:11:03
13877
2
原创 Android中Application单例模式的正确写法
在Android开发中,经常要在别的类去拿Application的单例,我看过很多单例模式的写法如下:public class MyApplication extends Application { private static MyApplication myApplication = null; @Override public void onCreate() {
2016-11-29 15:30:59
13500
7
原创 Android实现不可左右滑动的ViewPager
很简单,就几行代码:public class NoScrollViewPager extends ViewPager { private boolean isScroll = false; public NoScrollViewPager(Context context) { super(context); } public NoScroll
2016-11-29 14:24:19
363
原创 Android 以任意比例裁剪图片
公司的一个小伙伴写的,可以按照任意比例裁剪图片。我觉得挺好用的。简单在这里记录一下,以后肯定还会用到。public class SeniorCropImageView extends ImageView implements ScaleGestureDetector.OnScaleGestureListener, View.OnLayoutChangeListener {
2016-11-11 18:44:34
5854
原创 Android 中任意View实现圆角
在咱们实际的项目开发中,经常会遇到需要把整个View裁剪成圆角的那种。如果用shape来做,那么圆角依旧裁剪不掉。谷歌出品过一个叫CardView的控件,可以很方便的设置圆角。但是这个在Android 5.0以下不兼容。最近项目要用到这个,所以我就想起了很早之前我在谷歌的源码里找到过一个比较简单的实现方案,这里贴一下,以后谁搜到我这篇博客可以直接使用了。代码贴一下,就一个类,很简单。
2016-11-11 17:34:26
7289
jadx-0.6.1-dev-build226.zip
2019-05-22
PB(powerbuilder)初学教程--笔记
2009-12-24
word 转 chm
2009-10-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人