<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[wilanzai的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wilanzai</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wilanzai]]></copyright><item><title><![CDATA[Android View 的绘制流程]]></title><link>https://blog.youkuaiyun.com/wilanzai/article/details/142387632</link><guid>https://blog.youkuaiyun.com/wilanzai/article/details/142387632</guid><author>wilanzai</author><pubDate>Fri, 20 Sep 2024 18:43:49 +0800</pubDate><description><![CDATA[那我们的这个布局是在什么时候添加进屏幕的呢？这里调用的是mGlobal的addView方法，mGlobal其实就是WindowManagerGlobal，是管理整个进程所有窗口信息的，接下来看看WindowManagerGlobal的addView方法。这里调用wm的addView，才把DecorView添加到窗口，wm其实就是WindowManagerImpl，接着我们跟进到WindowManagerImpl的addView。接下来才到关键的地方了，ViewRootImpl的setView方法。]]></description><category></category></item><item><title><![CDATA[Android  PopupWindow点击外部和返回键消失]]></title><link>https://blog.youkuaiyun.com/wilanzai/article/details/115717477</link><guid>https://blog.youkuaiyun.com/wilanzai/article/details/115717477</guid><author>wilanzai</author><pubDate>Thu, 15 Apr 2021 10:18:42 +0800</pubDate><description><![CDATA[popupWindow.setFocusable(true);
popupWindow.setOutsideTouchable(true);
popupWindow.setBackgroundDrawable(new ColorDrawable());

添加以上设置就行。

需要注意的是，这些设置需要加载PopupWindow的show方法之前才能起作用，否则不起做用。
...]]></description><category></category></item><item><title><![CDATA[Android Res下的values-sw360dp，values-sw480dp，values-swxxxdp到底是什么东西]]></title><link>https://blog.youkuaiyun.com/wilanzai/article/details/108085658</link><guid>https://blog.youkuaiyun.com/wilanzai/article/details/108085658</guid><author>wilanzai</author><pubDate>Tue, 18 Aug 2020 19:34:39 +0800</pubDate><description><![CDATA[举个例子,在xml文件来一个宽高都是120dp的按钮，分别在三个机子上运行

&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"&gt;

    &lt;]]></description><category></category></item><item><title><![CDATA[Android修改字体样式]]></title><link>https://blog.youkuaiyun.com/wilanzai/article/details/106266801</link><guid>https://blog.youkuaiyun.com/wilanzai/article/details/106266801</guid><author>wilanzai</author><pubDate>Thu, 21 May 2020 20:32:45 +0800</pubDate><description><![CDATA[在Android实际开发中根据UI的设计图，经常要去改变系统

单独设置字体样式

（1）Android系统提供了几种字体样式可供选择

通过设置typeface属性或者fontFamily属性设置
typeface属性：

normal
	serif
	sans
	monospace
fontFamily属性：

casual
	cursive
	serif
	monospace
	sans-serif
	sans-serif-condensed
	serif-monospace
	sans-serif-]]></description><category></category></item><item><title><![CDATA[android的armeabi和armeabi-v7a]]></title><link>https://blog.youkuaiyun.com/wilanzai/article/details/105640207</link><guid>https://blog.youkuaiyun.com/wilanzai/article/details/105640207</guid><author>wilanzai</author><pubDate>Mon, 20 Apr 2020 17:32:54 +0800</pubDate><description><![CDATA[在ANE中如果SDK调用了so库，则需要把so库放到ANE下Android-ARM/lib/armeabi （调试模式）或者armeabi-v7a（发行模式）下。

可以贴个ADT代码说明问题:


//m_configType.equals("apk") 是否是发行模式
//(hasCaptiveRuntime() 是否带运行时
 if ((m_configType.equals("apk")...]]></description><category></category></item><item><title><![CDATA[java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState]]></title><link>https://blog.youkuaiyun.com/wilanzai/article/details/105535856</link><guid>https://blog.youkuaiyun.com/wilanzai/article/details/105535856</guid><author>wilanzai</author><pubDate>Wed, 15 Apr 2020 15:20:17 +0800</pubDate><description><![CDATA[在使用DialogFragment show方法时偶尔会出现这个异常，

原因：show()方法内部使用了commit()方法提交事务，而commit方法是在Activity的onSaveInstanceState()之后调用的，这样会出错。

解决办法：不使用show()方法，使用commitAllowingStateLoss()方法，例如以前使用show()方法：dialog.show(get...]]></description><category></category></item><item><title><![CDATA[Java代码设置RecyclerView滚动条显示隐藏，一直显示]]></title><link>https://blog.youkuaiyun.com/wilanzai/article/details/105452560</link><guid>https://blog.youkuaiyun.com/wilanzai/article/details/105452560</guid><author>wilanzai</author><pubDate>Sat, 11 Apr 2020 14:47:34 +0800</pubDate><description><![CDATA[RecyclerView的滚动条是默认不绘制的，在xml中使用时，加上scrollbars属性即可显示出滚动条，在java代码中设置


setVerticalScrollBarEnabled(boolean flag) 一样可以设置滚动条是否绘制。

如果想让滚动条一直显示不消失


setScrollbarFadingEnabled(false); setScrollBarFadeDurat...]]></description><category></category></item><item><title><![CDATA[View getWidth()、getHeight()为0的解决办法]]></title><link>https://blog.youkuaiyun.com/wilanzai/article/details/104801637</link><guid>https://blog.youkuaiyun.com/wilanzai/article/details/104801637</guid><author>wilanzai</author><pubDate>Wed, 11 Mar 2020 17:46:16 +0800</pubDate><description><![CDATA['在onCreate()方法中获取View的width和height时，取出来的值是0。
为什么呢？
因为View的width和height只有在onMesure()和onLayout()被调用之后才能取到。而onCreate()被调用之后onMesure()和onLayout()才会被调用。

解决方法有三：

1.View.post()


view.post(new Runnable() {...]]></description><category></category></item><item><title><![CDATA[Android 适配希伯来语 显示异常问题]]></title><link>https://blog.youkuaiyun.com/wilanzai/article/details/104512488</link><guid>https://blog.youkuaiyun.com/wilanzai/article/details/104512488</guid><author>wilanzai</author><pubDate>Wed, 26 Feb 2020 10:56:25 +0800</pubDate><description><![CDATA[最新在做公司项目，适配小语种希伯来语、波斯语的时候，出现很奇怪的问题，好在最后还是解决了，这里记录一下。

问题：小语种在显示&lt;=200的时候会显示成 

解决办法：


titleSN.setText(BidiFormatter.getInstance().unicodeWrap(tSN, TextDirectionHeuristicsCompat.RTL));

现在就显示正常了 ...]]></description><category></category></item><item><title><![CDATA[android如何判断byte[]的编码格式]]></title><link>https://blog.youkuaiyun.com/wilanzai/article/details/103148942</link><guid>https://blog.youkuaiyun.com/wilanzai/article/details/103148942</guid><author>wilanzai</author><pubDate>Tue, 19 Nov 2019 19:19:46 +0800</pubDate><description><![CDATA[用到工具 juniversalchardet.jar

可到官网自行下载https://mvnrepository.com/artifact/com.googlecode.juniversalchardet/juniversalchardet

我的网盘也有，大家也可以下载，链接: https://pan.baidu.com/s/1r724lBgRuzxC3r2tzH_H1w 提取码: 2qa...]]></description><category></category></item><item><title><![CDATA[Android性能优化：手把手带你全面了解 内存泄露 & 解决方案]]></title><link>https://blog.youkuaiyun.com/wilanzai/article/details/103066324</link><guid>https://blog.youkuaiyun.com/wilanzai/article/details/103066324</guid><author>wilanzai</author><pubDate>Thu, 14 Nov 2019 14:41:48 +0800</pubDate><description><![CDATA[前言

在Android中，内存泄露的现象十分常见；而内存泄露导致的后果会使得应用Crash
	本文 全面介绍了内存泄露的本质、原因 &amp; 解决方案，最终提供一些常见的内存泄露分析工具，希望你们会喜欢。
目录



1. 简介

即ML （Memory Leak）
	指 程序在申请内存后，当该内存不需再使用但 却无法被释放 &amp; 归还给 程序的现象
2. 对应用程序的影响

容易使...]]></description><category></category></item><item><title><![CDATA[Android AES文件加密 ECB模式]]></title><link>https://blog.youkuaiyun.com/wilanzai/article/details/102936126</link><guid>https://blog.youkuaiyun.com/wilanzai/article/details/102936126</guid><author>wilanzai</author><pubDate>Thu, 07 Nov 2019 08:56:31 +0800</pubDate><description><![CDATA[项目过程中遇到一个新需求，对文件进行AES加密解密，要求用ECB模式，这里记录一下

网上找了很多资料，对字符串进行加密很多，可是我需要的是对文件进行加密，一开始的思路是把文件内容读出来，然后对这些内容循环加密，但是如果文件比较大的话担心这样会出现问题...

https://blog.youkuaiyun.com/WHB20081815/article/details/73997645从中得到很大帮助，感...]]></description><category></category></item><item><title><![CDATA[android 反编译jar包]]></title><link>https://blog.youkuaiyun.com/wilanzai/article/details/102752795</link><guid>https://blog.youkuaiyun.com/wilanzai/article/details/102752795</guid><author>wilanzai</author><pubDate>Sat, 26 Oct 2019 09:08:17 +0800</pubDate><description><![CDATA[最近开发过程中尝试了下jar包的反编译，记录一下~~~~

用到的工具：fernflower.jar

下载链接: https://pan.baidu.com/s/1Nt0Eb7HS2sT18KbmoYIqkw 提取码: m757

下载好fernflower.jar后，输入命令



我这里是反编译E盘目录下的classes.jar文件，反编译后的文件输出目录为E盘下的decompile文件夹...]]></description><category></category></item><item><title><![CDATA[Android查看apk签名信息]]></title><link>https://blog.youkuaiyun.com/wilanzai/article/details/100726142</link><guid>https://blog.youkuaiyun.com/wilanzai/article/details/100726142</guid><author>wilanzai</author><pubDate>Wed, 11 Sep 2019 09:08:31 +0800</pubDate><description><![CDATA[转自http://www.trinea.cn/android/android-view-signatures/comment-page-1/



判断Apk是否签名



用命令：jarsigner-verify-verbose-certs&lt;apk文件&gt;

如果有AndroidDebug字樣就是debug

 如果已经签名: [证书的有效期为13-8-31 下午2:3...]]></description><category></category></item><item><title><![CDATA[Android开发中的assets目录的作用]]></title><link>https://blog.youkuaiyun.com/wilanzai/article/details/100151565</link><guid>https://blog.youkuaiyun.com/wilanzai/article/details/100151565</guid><author>wilanzai</author><pubDate>Fri, 30 Aug 2019 10:25:21 +0800</pubDate><description><![CDATA[assets目录下不会生成R文件索引，在res目录下会生成R文件索引。

1.assets:不会在R.java文件下生成相应的标记，assets文件夹可以自己创建文件夹，必须使用AssetsManager类进行访问，存放到这里的资源在运行打包的时候都会打入程序安装包中，

2.res：会在R.java文件下生成标记，这里的资源会在运行打包操作的时候判断哪些被使用到了，没有被使用到的文件资源是不会打...]]></description><category></category></item><item><title><![CDATA[git拉取远程分支到本地]]></title><link>https://blog.youkuaiyun.com/wilanzai/article/details/96426103</link><guid>https://blog.youkuaiyun.com/wilanzai/article/details/96426103</guid><author>wilanzai</author><pubDate>Thu, 18 Jul 2019 13:39:46 +0800</pubDate><description><![CDATA[转自：https://blog.youkuaiyun.com/carfge/article/details/79691360

工作中用到git拉取远程分支代码到本地，记录一下.....

步骤：

1、新建一个空文件，文件名为hhhh



2、初始化

 git init



3、与origin master建立连接（下划线为远程仓库链接）

git remote add origingit@g...]]></description><category></category></item><item><title><![CDATA[Android Studio 中javah不是内部或外部命令问题]]></title><link>https://blog.youkuaiyun.com/wilanzai/article/details/94365322</link><guid>https://blog.youkuaiyun.com/wilanzai/article/details/94365322</guid><author>wilanzai</author><pubDate>Mon, 01 Jul 2019 00:52:19 +0800</pubDate><description><![CDATA[在我的电脑系统环境变量配置后，命令提示符中可以运行javah命令，但是Android Studio 仍然找不到javah命令，解决方法如下：

找到安装路径C:\Program Files\Android\Android Studio\jre\bin，具体情况换成相应的安装路径，然后打开Android Studio的终端命令键入

setx PATH "%PATH%;C:\Program File...]]></description><category></category></item><item><title><![CDATA[Java中ArrayList和LinkedList区别]]></title><link>https://blog.youkuaiyun.com/wilanzai/article/details/93889327</link><guid>https://blog.youkuaiyun.com/wilanzai/article/details/93889327</guid><author>wilanzai</author><pubDate>Thu, 27 Jun 2019 16:47:35 +0800</pubDate><description><![CDATA[记录一下学习过程~~~~

一般大家都知道ArrayList和LinkedList的大致区别：

 1.ArrayList是实现了基于动态数组的数据结构，LinkedList基于链表的数据结构。 （LinkedList是双向链表，有next也有previous）
 2.对于随机访问get和set，ArrayList觉得优于LinkedList，因为LinkedList要移动指针。...]]></description><category></category></item><item><title><![CDATA[【Android】详解7.0带来的新工具类：DiffUtil]]></title><link>https://blog.youkuaiyun.com/wilanzai/article/details/53487163</link><guid>https://blog.youkuaiyun.com/wilanzai/article/details/53487163</guid><author>wilanzai</author><pubDate>Tue, 06 Dec 2016 15:12:18 +0800</pubDate><description><![CDATA[作为一枚码渣 ，只能多仰望一下大神了..
文章来源：http://blog.youkuaiyun.com/zxt0601/article/details/52562770 
本文出自:【张旭童的博客】 (http://blog.youkuaiyun.com/zxt0601)



一 概述


DiffUtil是support-v7:24.2.0中的新工具类，它用来比较两个数据集，寻找出旧数据集-》新数]]></description><category></category></item><item><title><![CDATA[使用 gradle 编译多版本 android 应用]]></title><link>https://blog.youkuaiyun.com/wilanzai/article/details/53305869</link><guid>https://blog.youkuaiyun.com/wilanzai/article/details/53305869</guid><author>wilanzai</author><pubDate>Wed, 23 Nov 2016 15:25:41 +0800</pubDate><description><![CDATA[原文：http://www.cnblogs.com/redclock/p/5033886.html?utm_source=tuicool&utm_medium=referral


最近要做一个 android 产品的变种版本，需要编出不同版本，每个版本有不同的包名、图标等等，和一些特有的逻辑。

很久之前做过类似的工作，当时没有 gradle, 用的方法是把公共代码抽成一个 libra]]></description><category></category></item></channel></rss>