<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[LyamAL的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/LyamAL</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; LyamAL]]></copyright><item><title><![CDATA[SpringBoot 2.4.x +thymeleaf 国际化 踩坑记录]]></title><link>https://blog.youkuaiyun.com/LyamAL/article/details/115064725</link><guid>https://blog.youkuaiyun.com/LyamAL/article/details/115064725</guid><author>LyamAL</author><pubDate>Mon, 22 Mar 2021 10:07:24 +0800</pubDate><description><![CDATA[application.properties里


spring.messages.basename=i18n.aloj
spring.messages.encoding=UTF-8

对应的目录结构：



除了配置en_US, zh_CN,一定还要配置一个默认的properties！！！

否则不给你整那些五五六六的 人家立刻乱码给你看



还有就是注意i18n，中间是数字18,别写错了。18的意思是internationalization 这个单词从i到n之间有18个英文字母 orz
...]]></description><category></category></item><item><title><![CDATA[Android Material ProgressBar 水平实现]]></title><link>https://blog.youkuaiyun.com/LyamAL/article/details/112526984</link><guid>https://blog.youkuaiyun.com/LyamAL/article/details/112526984</guid><author>LyamAL</author><pubDate>Tue, 12 Jan 2021 14:54:02 +0800</pubDate><description><![CDATA[1、简单粗暴


style="?android:attr/progressBarStyleHorizontal"


2、自己写style

新建一个drawable.xml


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

    &lt;item android:id="@android:id/back]]></description><category></category></item><item><title><![CDATA[复习Android--Handler消息机制]]></title><link>https://blog.youkuaiyun.com/LyamAL/article/details/112505238</link><guid>https://blog.youkuaiyun.com/LyamAL/article/details/112505238</guid><author>LyamAL</author><pubDate>Tue, 12 Jan 2021 04:53:24 +0800</pubDate><description><![CDATA[1、handler不能在子线程里创建，在主线程里new出来的handler是可以在子线程里调用的。



原因在于主线程里，handler前面有Looper.prepare(), 但是子线程里没有。

而这个looper，与messageQueue是一起的，因为handler发送消息的时候，就是向messageQueue里入队一个Message，这样一来，如果没有Looper.prepare()，就没有messageQueue,那么handler就没有地方放消息啦；

（这是入队的源码）



所以，要想在]]></description><category></category></item><item><title><![CDATA[（菜鸟向）Android Studio4.x 和gradle的相爱相杀]]></title><link>https://blog.youkuaiyun.com/LyamAL/article/details/112505179</link><guid>https://blog.youkuaiyun.com/LyamAL/article/details/112505179</guid><author>LyamAL</author><pubDate>Tue, 12 Jan 2021 03:36:24 +0800</pubDate><description><![CDATA[回顾自己以前的项目，发现随着Android Studio升级到4.1,gradle版本到6.5之后，很多要注意的地方，记录一下。

1、gradle下载太慢了，每次打开项目都要download

解决方法：

①在https://mirrors.cloud.tencent.com/gradle/找到要下的版本，放到本地.gradle路径下,这个路径与android setting里的gradle的路径是对应的。

如图







② 修改gradle-wrapper.properties文件,将最后一.]]></description><category></category></item><item><title><![CDATA[Android 模拟器 Read-Only File System的终极解决方案！！]]></title><link>https://blog.youkuaiyun.com/LyamAL/article/details/104538901</link><guid>https://blog.youkuaiyun.com/LyamAL/article/details/104538901</guid><author>LyamAL</author><pubDate>Thu, 27 Feb 2020 16:29:05 +0800</pubDate><description><![CDATA[废话不多说，直接上代码

首先不要通过AS启动模拟器

进入你的SDK/tools文件夹：



命令行敲：（我的emulator是Nexus_6_API_24,你们的自行更换）


emulator.exe -writable-system -avd Nexus_6_API_24 -no-snapshot-load -qemu

启动后，常规操作了


adb root
adb remount
...]]></description><category></category></item><item><title><![CDATA[亲测可用！HTML 防止回车键自动提交表单]]></title><link>https://blog.youkuaiyun.com/LyamAL/article/details/104108347</link><guid>https://blog.youkuaiyun.com/LyamAL/article/details/104108347</guid><author>LyamAL</author><pubDate>Wed, 29 Jan 2020 17:19:56 +0800</pubDate><description><![CDATA[$(document).ready(function () {
    $("#form").bind("keypress", function(e) {
        if (e.keyCode === 13) {
            return false;
        }
    });
}


]]></description><category></category></item><item><title><![CDATA[docker import 时报错invalid reference format]]></title><link>https://blog.youkuaiyun.com/LyamAL/article/details/103822811</link><guid>https://blog.youkuaiyun.com/LyamAL/article/details/103822811</guid><author>LyamAL</author><pubDate>Fri, 03 Jan 2020 16:34:33 +0800</pubDate><description><![CDATA[错误书写：

docker import xxx.tar - repo:2.0

正确书写：

docker import xxx.tar -- repo:2.0

没错

是两个英文的横线--

不是一个横线-


]]></description><category></category></item><item><title><![CDATA[MyBatis 延迟懒加载无效的可能情况]]></title><link>https://blog.youkuaiyun.com/LyamAL/article/details/100608019</link><guid>https://blog.youkuaiyun.com/LyamAL/article/details/100608019</guid><author>LyamAL</author><pubDate>Sat, 07 Sep 2019 21:35:07 +0800</pubDate><description><![CDATA[1、调用了默认的触发方法，由于lazyLoadTriggerMethods：指定哪个对象的方法触发一次延迟加载。默认值：equals,clone,hashCode,toString

解决方案：

加上 &lt;setting name="lazyLoadTriggerMethods" value=""/&gt;


&lt;settings&gt;
    &lt;setting name="l...]]></description><category></category></item><item><title><![CDATA[Picasso 加载图片时高度自适应而宽度固定]]></title><link>https://blog.youkuaiyun.com/LyamAL/article/details/99655507</link><guid>https://blog.youkuaiyun.com/LyamAL/article/details/99655507</guid><author>LyamAL</author><pubDate>Thu, 15 Aug 2019 20:42:11 +0800</pubDate><description><![CDATA[想要加载的图片固定为ImageView的宽度， 高度相应调整， 可以使用Transform:


 public static class ImageTransformation {

        static Transformation getTransformation(final ImageView imageView) {
            return new Transfo...]]></description><category></category></item><item><title><![CDATA[关于正确获得RecyclerView中ViewHolder的Item Position]]></title><link>https://blog.youkuaiyun.com/LyamAL/article/details/99655184</link><guid>https://blog.youkuaiyun.com/LyamAL/article/details/99655184</guid><author>LyamAL</author><pubDate>Thu, 15 Aug 2019 20:33:48 +0800</pubDate><description><![CDATA[由于需要在Adapter里处理item的点击事件，所以获取Item位置有个方法：

getAdapterPosition()

但是由于RecyclerView的ViewHolder存在回收机制，所以item位置会不准确；

解决方法有：

1、标记不回收；


viewHolder.setIsRecyclable(false)

这样直接“阉割”了RecyclerView最大的特点， 十分不推荐...]]></description><category></category></item><item><title><![CDATA[马士兵老师Struts2学习笔记]]></title><link>https://blog.youkuaiyun.com/LyamAL/article/details/93380430</link><guid>https://blog.youkuaiyun.com/LyamAL/article/details/93380430</guid><author>LyamAL</author><pubDate>Sun, 23 Jun 2019 13:38:19 +0800</pubDate><description><![CDATA[1、namespace = "" 处理的是找不到对应的namespace的所有情况

 比如有一个package, namespace = "/top" result为/index.jsp
  有一个package, namespace = ""   result为/index.jsp
 如果我敲/bottom/index.jsp,没有对应的namespace, 那么...]]></description><category></category></item><item><title><![CDATA[Android属性动画(三):SVG+XML+drawable相结合]]></title><link>https://blog.youkuaiyun.com/LyamAL/article/details/89390001</link><guid>https://blog.youkuaiyun.com/LyamAL/article/details/89390001</guid><author>LyamAL</author><pubDate>Thu, 18 Apr 2019 22:54:58 +0800</pubDate><description><![CDATA[有几天没更新啦，最近一级忙qaq

一、关系：

经常听到这个，这个网站可以在线制作SVG：http://editor.method.ac/

VectorDrawable和AnimatedVectorDrawable 用来支持SVG：

VectorDrawable： 创建基于XML的SVG图形；

AnimatedVectorDrawable 实现动画效果；

二、 SVG:

最小单位：pa...]]></description><category></category></item><item><title><![CDATA[Android属性动画(三):AnimationSet 和 animate()]]></title><link>https://blog.youkuaiyun.com/LyamAL/article/details/89290299</link><guid>https://blog.youkuaiyun.com/LyamAL/article/details/89290299</guid><author>LyamAL</author><pubDate>Sat, 13 Apr 2019 22:54:28 +0800</pubDate><description><![CDATA[1、虽然PropertyValuesHolder可以对多个属性进行操作，而AnimatorSet类似视图动画，还可以设置多个属性的发生顺序等等：

如：


ObjectAnimator objectAnimator1 = ObjectAnimator.ofFloat(View,"translationX", 150);
ObjectAnimator objectAnimator2 = Ob...]]></description><category></category></item><item><title><![CDATA[Android属性动画(二):VauleAnimator和ObjectAnimator的监听]]></title><link>https://blog.youkuaiyun.com/LyamAL/article/details/89262839</link><guid>https://blog.youkuaiyun.com/LyamAL/article/details/89262839</guid><author>LyamAL</author><pubDate>Fri, 12 Apr 2019 23:09:43 +0800</pubDate><description><![CDATA[1、ValueAnimator可以用来对动画发生过程中的数值进行监听，从而方便实时处理：

ValueAnimator animator = ValueAnimator.ofFloat(0,100);

animator.setTarget(view);

animator.setDuration(1000).start();

animator.addUpdateListener(new An...]]></description><category></category></item><item><title><![CDATA[Android属性动画(一）:ObjectAnimator]]></title><link>https://blog.youkuaiyun.com/LyamAL/article/details/89222136</link><guid>https://blog.youkuaiyun.com/LyamAL/article/details/89222136</guid><author>LyamAL</author><pubDate>Thu, 11 Apr 2019 23:03:06 +0800</pubDate><description><![CDATA[属性动画和视图动画不同之处在于， 属性动画后的view新位置是可以响应点击事件等， 属性动画移动的带有View的属性，而视图动画移动的只是视图而已， 交互事件依然在原位置才能响应。

1、ObjectAnimator:

创建一个ObjectAnimator需要通过静态工厂方法：传入的参数代表所要应用动画的view, 应用动画的哪个属性， 以及最后的可变参数代表相应属性的应用动画后的值（或范围）；...]]></description><category></category></item><item><title><![CDATA[Android视图动画]]></title><link>https://blog.youkuaiyun.com/LyamAL/article/details/89221489</link><guid>https://blog.youkuaiyun.com/LyamAL/article/details/89221489</guid><author>LyamAL</author><pubDate>Thu, 11 Apr 2019 22:25:56 +0800</pubDate><description><![CDATA[今天学习了几种视图动画：

一、AlphaAnimation 透明动画

//设置透明度从0到1

AlphaAnimation aa = new AlphaAnimation(0,1);

aa.setDuration(1000);

view.startAnimation(aa);



二、旋转动画：

RotateAnimation ra = new RotateAnimation(0,...]]></description><category></category></item><item><title><![CDATA[简单的DragView（二）]]></title><link>https://blog.youkuaiyun.com/LyamAL/article/details/89196808</link><guid>https://blog.youkuaiyun.com/LyamAL/article/details/89196808</guid><author>LyamAL</author><pubDate>Wed, 10 Apr 2019 22:25:44 +0800</pubDate><description><![CDATA[实现功能：拖动view之后返回到原位置（平滑返回而非瞬时移动）

分析:用到Scroller类的computeScroll()方法，它是Scroller类的核心方法，这里牵涉到它的循环调用；

1、重写computeScroll():

super.computeScroll();

if(mScroller.computeScrollOffset())

{

((View)getParent)...]]></description><category></category></item><item><title><![CDATA[简单的DragView（一）]]></title><link>https://blog.youkuaiyun.com/LyamAL/article/details/89195858</link><guid>https://blog.youkuaiyun.com/LyamAL/article/details/89195858</guid><author>LyamAL</author><pubDate>Wed, 10 Apr 2019 22:02:51 +0800</pubDate><description><![CDATA[写一个DragView继承 View，重写onTouchEvent方法：

首先：

int x = (int)event.getRawX();

int y = (int)event.getRawY();

获得实时的手指坐标。

然后，判断触摸事件：

Down:mLastX = x; mLastY = y;

Move:offsetX = x - mLastX; offsetY = y...]]></description><category></category></item><item><title><![CDATA[Android Studio打开报错“..\native\19\windows-amd64\native-platform.dll.lock 拒绝访问”的处理方法]]></title><link>https://blog.youkuaiyun.com/LyamAL/article/details/83475637</link><guid>https://blog.youkuaiyun.com/LyamAL/article/details/83475637</guid><author>LyamAL</author><pubDate>Sun, 28 Oct 2018 16:28:15 +0800</pubDate><description><![CDATA[今天电脑有问题重启后， 再次打开AS就报错

error:C:\Users\ZAQ\.gradle\native\19\windows-amd64\native-platform.dll.lock (拒绝访问)

很懵

上网查了一下，解决方法有：

① 进入该目录 把native-platform.dll.lock 重命名为 native-platform.dll

我进去一看 有俩文件，一个....]]></description><category></category></item></channel></rss>