<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[L_junpeng的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/L_junpeng</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; L_junpeng]]></copyright><item><title><![CDATA[MotionLayout 学习实践，仿写两个效果图]]></title><link>https://blog.youkuaiyun.com/L_junpeng/article/details/122617538</link><guid>https://blog.youkuaiyun.com/L_junpeng/article/details/122617538</guid><author>L_junpeng</author><pubDate>Fri, 21 Jan 2022 11:23:26 +0800</pubDate><description><![CDATA[MotionLayout 学习实践]]></description><category></category></item><item><title><![CDATA[随记：Flutter获取widget的大小位置，状态栏高度]]></title><link>https://blog.youkuaiyun.com/L_junpeng/article/details/115126864</link><guid>https://blog.youkuaiyun.com/L_junpeng/article/details/115126864</guid><author>L_junpeng</author><pubDate>Tue, 23 Mar 2021 15:51:48 +0800</pubDate><description><![CDATA[也可参考https://www.jianshu.com/p/8117fbc5b4d3

1.获取状态栏高度：


MediaQueryData.fromWindow(WidgetsBinding.instance.window).padding.top

2.获取AppBar的高度-kToolbarHeight


import 'package:flutter/src/material/constants.dart';

///  * [kMinInteractiveDimensionCupertino.]]></description><category></category></item><item><title><![CDATA[Flutter中的Isolate的个人理解]]></title><link>https://blog.youkuaiyun.com/L_junpeng/article/details/114582463</link><guid>https://blog.youkuaiyun.com/L_junpeng/article/details/114582463</guid><author>L_junpeng</author><pubDate>Tue, 09 Mar 2021 14:56:44 +0800</pubDate><description><![CDATA[用写Android角度来理解官方给到的Isolate的例子还是不太容易理解到位的，一开始我是感觉有点绕的




Dart是单线程执行模型，支持Isolates（在另一个线程上运行Dart代码的方式）、事件循环和异步编程。 除非您启动一个Isolate，否则您的Dart代码将在主UI线程中运行，并由事件循环驱动（译者语：和JavaScript一样）。


我贴下一个官方的例子：


import 'dart:convert';

import 'package:flutter/material.dart'.]]></description><category></category></item><item><title><![CDATA[Android 5.0,5.1中WebView出现ResourcesNotFoundException String resource ID #0x2040003]]></title><link>https://blog.youkuaiyun.com/L_junpeng/article/details/109597292</link><guid>https://blog.youkuaiyun.com/L_junpeng/article/details/109597292</guid><author>L_junpeng</author><pubDate>Tue, 10 Nov 2020 13:57:50 +0800</pubDate><description><![CDATA[出现这个问题肯定是使用Androidx后出现的，问题出现在 androidx.appcompat:appcompat 的依赖上

百度找了一圈答案后，总结了几个解决方法：

1.直接升级appcompat的版本，这个bug基本是出现在appcompat:1.1.0版本上，目前稳定版本是1.2.0，修改成如下


dependencies {
    def appcompat_version = "1.2.0"

    implementation "androidx.appcompat:appcompa]]></description><category></category></item><item><title><![CDATA[JS 在获取当前月的最后一天遇到的坑]]></title><link>https://blog.youkuaiyun.com/L_junpeng/article/details/100017267</link><guid>https://blog.youkuaiyun.com/L_junpeng/article/details/100017267</guid><author>L_junpeng</author><pubDate>Thu, 22 Aug 2019 15:58:41 +0800</pubDate><description><![CDATA[最近在写一个前端的日历功能，除了日历功能还有一个日期计算的需求，获取当月的最后一天，一开始写出来发现是没问题的，h后来自测发现了一个问题，在掘金中偶然也发现了一篇类似的文章，所以我也来记录下问题。
大致代码是这样:
date的月份往后加一个月，通过setDate为0就可以拿到上个月的最后一天
let date = new Date();
date.setMonth(date.getMonth() ...]]></description><category></category></item><item><title><![CDATA[Android侧滑菜单-一个零耦合的侧滑菜单]]></title><link>https://blog.youkuaiyun.com/L_junpeng/article/details/91968321</link><guid>https://blog.youkuaiyun.com/L_junpeng/article/details/91968321</guid><author>L_junpeng</author><pubDate>Tue, 20 Aug 2019 11:08:19 +0800</pubDate><description><![CDATA[话不多说先上图

目前功能如下

支持启用或禁用侧滑菜单
支持菜单在条目的左边或者右边
支持滑动阻塞或非阻塞
支持点击了menu后是否自动关闭menu
支持menu打开和关闭的回调监听
可快速打开和关闭menu

【点我】更多详细使用说明请移步github
写之前已经有自己的思路，后面看了几个博客的思路想碰撞下，看看会不会有新的启发，果不其然还是有的！！毕竟一个人的思维容易固定化;
我一开想的是不...]]></description><category></category></item><item><title><![CDATA[ConstraintLayout的constraintDimensionRatio属性记录]]></title><link>https://blog.youkuaiyun.com/L_junpeng/article/details/99622518</link><guid>https://blog.youkuaiyun.com/L_junpeng/article/details/99622518</guid><author>L_junpeng</author><pubDate>Thu, 15 Aug 2019 10:08:18 +0800</pubDate><description><![CDATA[&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/a...]]></description><category></category></item><item><title><![CDATA[仿oppo手机浏览器首页的滑动布局]]></title><link>https://blog.youkuaiyun.com/L_junpeng/article/details/90814511</link><guid>https://blog.youkuaiyun.com/L_junpeng/article/details/90814511</guid><author>L_junpeng</author><pubDate>Wed, 05 Jun 2019 20:06:39 +0800</pubDate><description><![CDATA[仿oppo手机浏览器首页的滑动布局原效果图![在这里插入图片描述](https://img-blog.csdnimg.cn/20190604222059446.gif)
原效果图

]]></description><category></category></item><item><title><![CDATA[html5-audio标签不能自动播放的坑！！！]]></title><link>https://blog.youkuaiyun.com/L_junpeng/article/details/89404606</link><guid>https://blog.youkuaiyun.com/L_junpeng/article/details/89404606</guid><author>L_junpeng</author><pubDate>Fri, 19 Apr 2019 17:42:09 +0800</pubDate><description><![CDATA[应用是运行在公众号上的，一直在google浏览器调试，做播放audio时一开始出现了一个报错


Uncaught (in promise) DOMException

百度搜了下是google浏览器的问题，就一时不着急没处理他，后面这个问题提上了日程，真是整整浪费了一天时间来改这个问题！！！

先简单说下一些我收集整理到的一些原因和处理方式，我也用过部分（如下）

部分浏览器、微信浏览器、ios...]]></description><category></category></item><item><title><![CDATA[android大漩涡旋转效果（极光星空）]]></title><link>https://blog.youkuaiyun.com/L_junpeng/article/details/86715430</link><guid>https://blog.youkuaiyun.com/L_junpeng/article/details/86715430</guid><author>L_junpeng</author><pubDate>Thu, 31 Jan 2019 15:42:01 +0800</pubDate><description><![CDATA[先放张效果图，gif录制把效果都显示成卡顿样子，其实不然



其实这是项目中的一个需求啦，我想着也写出来自己做个记录。

先来简单看下这个效果

1，背后有一个一直旋转的类似极光星空的效果，每个圆之间的距离逐渐增大，每个圆上有固定的两个黄色弧线（可变的）

2，往看上层view，两个转向不同的花轮，其实这是两个图片，加上一个旋转动画的效果（中间是app的icon）

3，不断的添加图片，做成一个...]]></description><category></category></item><item><title><![CDATA[一个简单的朋友圈单张或多张图片展示的思路]]></title><link>https://blog.youkuaiyun.com/L_junpeng/article/details/86711749</link><guid>https://blog.youkuaiyun.com/L_junpeng/article/details/86711749</guid><author>L_junpeng</author><pubDate>Thu, 31 Jan 2019 10:42:34 +0800</pubDate><description><![CDATA[先放在例子图，跟朋友圈的单张或者多张图片展示很相识！



简单介绍下，最多3列，最多3行，2张图片或者4张图片时为2列。

看到这个需求，我首先想到的是自定义一个viewgroup，通过addview的方式动态计算宽高。

后面又分析了下，想到了一个比较走捷径的方法，LinearLayout的recyclerView嵌套一个gridLayout的recyclerView

（如果有scrollv...]]></description><category></category></item><item><title><![CDATA[仿ios时间轴相册（带预览选择以及浮动头部功能）]]></title><link>https://blog.youkuaiyun.com/L_junpeng/article/details/81636185</link><guid>https://blog.youkuaiyun.com/L_junpeng/article/details/81636185</guid><author>L_junpeng</author><pubDate>Tue, 14 Aug 2018 12:06:33 +0800</pubDate><description><![CDATA[        最近由于立项了一个新的项目，一个比较有纪念意义的项目，主打情怀。我也是带着这种深厚的情怀感，非常用心的来写着每一行代码。（假装给领导看下，嘎嘎~）

       回归正题，自定义的东西也比较多，上个周翻UI图，忽然看见一个时间轴的相册的东西，当时一看直接用了知乎的一个图片选择器框架，本来想去改进一番，想来想去还是自己写一个吧（其实是看不懂，不太好下手）

我知道没有效果你们是不会...]]></description><category></category></item><item><title><![CDATA[微信小程序canvas的撤销功能]]></title><link>https://blog.youkuaiyun.com/L_junpeng/article/details/79445662</link><guid>https://blog.youkuaiyun.com/L_junpeng/article/details/79445662</guid><author>L_junpeng</author><pubDate>Mon, 05 Mar 2018 14:52:50 +0800</pubDate><description><![CDATA[小程序越来越简单，提供给开发者的api也越来越多，微信这个平台真的很厉害~~-------------------canvas画板在涂鸦的时候，一不小心画错了一步，想撤销上一步，还是在微信小程序中去实现这个功能，顿时卡住了，还是去翻百度，翻csdn、简书，总结了几个文档按照自己的思路想了一个简单的方案；在微信小程序的api支持下是这么做的：一个动作start-&amp;gt;move-&amp;gt;end(ca...]]></description><category></category></item><item><title><![CDATA[SharedPreferences存储StringSet失效的坑！！]]></title><link>https://blog.youkuaiyun.com/L_junpeng/article/details/79228178</link><guid>https://blog.youkuaiyun.com/L_junpeng/article/details/79228178</guid><author>L_junpeng</author><pubDate>Thu, 01 Feb 2018 15:14:07 +0800</pubDate><description><![CDATA[用sp存取set真是被坑了一大下子！！！

//1. 保存set类型数据
public static void saveSet(Context context, String key, Set value) {
    SharedPreferences preferences = context.getSharedPreferences(CommonData.SPNAME, Build.VE]]></description><category></category></item><item><title><![CDATA[android动态更改桌面icon和name]]></title><link>https://blog.youkuaiyun.com/L_junpeng/article/details/79106938</link><guid>https://blog.youkuaiyun.com/L_junpeng/article/details/79106938</guid><author>L_junpeng</author><pubDate>Fri, 19 Jan 2018 15:50:51 +0800</pubDate><description><![CDATA[更改桌面的图标和名字跟Manifest中的配置脱不了关系，每写一个activity我们就要在Manifest中配置一下，特别是主入口MainActivity，下面是给Main必须要配置的，通常来说intent-filter中的这两个标志着程序在桌面的一个入口，如果你有两个activity这么配置了，那你的桌面就会出现两个图标两个入口。可以自己试试哈
    android:name="androi]]></description><category></category></item><item><title><![CDATA[获取当前launcher的所在Activity并跳转]]></title><link>https://blog.youkuaiyun.com/L_junpeng/article/details/79106809</link><guid>https://blog.youkuaiyun.com/L_junpeng/article/details/79106809</guid><author>L_junpeng</author><pubDate>Fri, 19 Jan 2018 14:55:38 +0800</pubDate><description><![CDATA[需求：当前手机的应用权限管理页面，android碎片化严重不仅体现在屏幕大小上，跟一些厂商的rom也有很大相关性，一些第三方rom也多，以下只拿oppo做单一说明

adb命令，adb devices 成功后（其他情况自行百度），打开当前连接的手机，并打开想要跳转的页面，比如权限管理页面或者其他，

输入如下命令：adb shell dumpsys activity top 后如下



共四处...]]></description><category></category></item><item><title><![CDATA[java反射和动态代理实现接口记录]]></title><link>https://blog.youkuaiyun.com/L_junpeng/article/details/79106801</link><guid>https://blog.youkuaiyun.com/L_junpeng/article/details/79106801</guid><author>L_junpeng</author><pubDate>Fri, 19 Jan 2018 14:55:03 +0800</pubDate><description><![CDATA[项目需求：app含有广告sdk，在上架个别应用市场时会被拒，产品希望在打包时一些渠道包把广告sdk剥离出来（内心是哭泣的）。方法一：每次打包删除jar包，删除与该jar包相关的代码类、接口等等~记录完成，谢谢大家哈哈 开个玩笑，言归正传，以上是我一开始的想法，最笨最笨的方法，没有之一，下面进入主题，用到的东西自然跟标题相关，反射和动态代理。反射其实我是知道用过的，但是项目中没实际用过，动态代理只是]]></description><category></category></item><item><title><![CDATA[记一次多渠道打包的坑]]></title><link>https://blog.youkuaiyun.com/L_junpeng/article/details/79106764</link><guid>https://blog.youkuaiyun.com/L_junpeng/article/details/79106764</guid><author>L_junpeng</author><pubDate>Fri, 19 Jan 2018 14:52:52 +0800</pubDate><description><![CDATA[项目中要用到一些第三方的统计来辅助我们做数据监测，而且根据市场渠道来看数据的对比，其中两个比较重要的就是友盟和腾讯的灯塔所以便用到了多渠道打包，直接说遇到的坑再只有一个umeng的时候代码里的配置是这样的manifest中的配置加了腾讯灯塔的manifest配置build中的配置本来以为这样子写是没问题，之前的时候flavor->flovor.manifestPlaceholders的数组中只有一]]></description><category></category></item><item><title><![CDATA[webView中在使用clearHistory失效的记录]]></title><link>https://blog.youkuaiyun.com/L_junpeng/article/details/79106748</link><guid>https://blog.youkuaiyun.com/L_junpeng/article/details/79106748</guid><author>L_junpeng</author><pubDate>Fri, 19 Jan 2018 14:52:01 +0800</pubDate><description><![CDATA[使用这个api的目的是为了在跳转其他activity操作后返回webview所在的activity的时候要去重新加载一个url，并且让这个url为当前webView的首页，不能goback，或者说是物理键返回的时候直接finish掉当前activity1，一开始使用的时候是这样子调用的mWebView.loadUrl("url");mWebView.clearHistory() ;//这个放在lo]]></description><category></category></item></channel></rss>