<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Android_1314的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Android_1314</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Android_1314]]></copyright><item><title><![CDATA[Android 仿淘宝物流信息TimeLineView]]></title><link>https://blog.youkuaiyun.com/Android_1314/article/details/124627561</link><guid>https://blog.youkuaiyun.com/Android_1314/article/details/124627561</guid><author>Android_1314</author><pubDate>Sat, 07 May 2022 11:35:17 +0800</pubDate><description><![CDATA[private Paint mPaint;
/**

首个节点的外半径

*/
private float timelineHeadRadius;
/**

首个节点的中心颜色

*/
private int timelineHeadColor;
/**

首个节点的边缘颜色

*/
private int timelineHeadColorEdge;
/**

其他节点的颜色值

*/
private int timelineOtherColor;
/**

时间线的节点数

*/
private int]]></description><category></category></item><item><title><![CDATA[Android _ 《看完不忘系列》之Glide]]></title><link>https://blog.youkuaiyun.com/Android_1314/article/details/124627490</link><guid>https://blog.youkuaiyun.com/Android_1314/article/details/124627490</guid><author>Android_1314</author><pubDate>Sat, 07 May 2022 11:33:08 +0800</pubDate><description><![CDATA[Glide glide = Glide.get(context);
//如果空fragment没有RequestManager，就创建一个
requestManager = factory.build(glide, current.getGlideLifecycle(),
current.getRequestManagerTreeNode(), context);
//让空fragment持有RequestManager
current.setRequestManager(requestManager);
]]></description><category></category></item><item><title><![CDATA[Android Room 实现简单的增删改查（一）]]></title><link>https://blog.youkuaiyun.com/Android_1314/article/details/124627208</link><guid>https://blog.youkuaiyun.com/Android_1314/article/details/124627208</guid><author>Android_1314</author><pubDate>Sat, 07 May 2022 11:23:43 +0800</pubDate><description><![CDATA[@Insert
void addUser(User user);
//修改
@Update
void updateUser(User user);
//删除
@Delete
void deleteUser(User user);
//获取User
@Query(“SELECT * FROM user WHERE userName=:userName”)
User getUser(String userName);
//查询
@Query(“SELECT * FROM User”)
List getUsers]]></description><category></category></item><item><title><![CDATA[Android 智能问答机器人的实现]]></title><link>https://blog.youkuaiyun.com/Android_1314/article/details/124606875</link><guid>https://blog.youkuaiyun.com/Android_1314/article/details/124606875</guid><author>Android_1314</author><pubDate>Fri, 06 May 2022 11:41:26 +0800</pubDate><description><![CDATA[android:layout_toLeftOf=“@id/id_chat_send”
android:background=“@drawable/login_edit_normal”
android:singleLine=“true”
android:textSize=“18sp” /&gt;

&lt;ListV 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源	徽信搜索公众号【编程进阶路】 iew
android:id=“@+id/id_chat_listVi]]></description><category></category></item><item><title><![CDATA[Android 拍照：如何使用已有相机应用捕获图片（Taking Photos Simply]]></title><link>https://blog.youkuaiyun.com/Android_1314/article/details/124606821</link><guid>https://blog.youkuaiyun.com/Android_1314/article/details/124606821</guid><author>Android_1314</author><pubDate>Fri, 06 May 2022 11:39:39 +0800</pubDate><description><![CDATA[目录需要WRITE_EXTERNAL_STORAGE权限。从Android 4.4开始，不再需要因为这个原因声明这个权限了。因为这个目


录不能被其他app访问，所以你可以通过添加maxSdkVersion属性，声明只在低版本的Android设备上请求这个权限。



&lt;manifest …&gt;


&lt;uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"



android:maxSdkVers.]]></description><category></category></item><item><title><![CDATA[Android 打造任意层级树形控件 考验你的数据结构和设计]]></title><link>https://blog.youkuaiyun.com/Android_1314/article/details/124606777</link><guid>https://blog.youkuaiyun.com/Android_1314/article/details/124606777</guid><author>Android_1314</author><pubDate>Fri, 06 May 2022 11:37:40 +0800</pubDate><description><![CDATA[*&nbsp;当前的级别


*/


private&nbsp;int&nbsp;level;


/**


*&nbsp;是否展开


*/


private&nbsp;boolean&nbsp;isExpand&nbsp;=&nbsp;false;


private&nbsp;int&nbsp;icon;


/**


*&nbsp;下一级的子Node


*/


private&nbsp;List&nbsp;children&nbsp;=&nbsp;new&nbsp;ArrayList..]]></description><category></category></item><item><title><![CDATA[Android 开发的现状及发展前景]]></title><link>https://blog.youkuaiyun.com/Android_1314/article/details/124606716</link><guid>https://blog.youkuaiyun.com/Android_1314/article/details/124606716</guid><author>Android_1314</author><pubDate>Fri, 06 May 2022 11:35:25 +0800</pubDate><description><![CDATA[所以，工作过一、两年后你会发现，自己每天重复工作内容就是将找各种各样的组件、框架，拖拖拽拽，改改样式。在极端情况下出现了问题后(比如部分机型上崩溃，加载图片慢)，也不知道该如何解决!都不好意思说自己是搞技术的。
造成这种局面的有两种原因：
1.所开发的App功能要求并不复杂，在性能上呢，也不需要极致的追求;
2.自己的意识不够，不知道如何从平凡的工作中提炼可优化的点，在向上提升方面也没有完整的规划。
从自身规划的角度讲，技术上的进阶分如下几个阶段：
1.做好业务需求的功能。这个是初级程序员就应该有的能力。.]]></description><category></category></item><item><title><![CDATA[Android 屏幕适配的最优方案（一）]]></title><link>https://blog.youkuaiyun.com/Android_1314/article/details/124606670</link><guid>https://blog.youkuaiyun.com/Android_1314/article/details/124606670</guid><author>Android_1314</author><pubDate>Fri, 06 May 2022 11:33:39 +0800</pubDate><description><![CDATA[（3）屏幕的像素密度


（4）屏幕尺寸、分辨率、像素密度三者关系


3.密度无关像素



（1）dp与px的转换



（2）独立比例像素


4.解决方案



（1）使用备用布局 -使用限定符



（2）使用最小宽度限定符


（3）使用可用宽度限定符


（4）添加屏幕方向限定符


（5）使用 Fragment 将界面组件模块化


（6）使用旧尺寸限定符支持 Android 3.1


（7）使用布局别名



[](()1.为什么要屏幕适配
=====================..]]></description><category></category></item><item><title><![CDATA[Android 安卓动画 补间动画 - 平移动画]]></title><link>https://blog.youkuaiyun.com/Android_1314/article/details/124606607</link><guid>https://blog.youkuaiyun.com/Android_1314/article/details/124606607</guid><author>Android_1314</author><pubDate>Fri, 06 May 2022 11:31:39 +0800</pubDate><description><![CDATA[找到anim点击OK，此时就创建好了

在这个文件夹(anim)下新建xml文件，右击anim文件夹按下图操作创建

在这个xml文件中写入属性，属性详细见下列表格解释:
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;translate xmlns:android=“http://schemas.android.com/apk/res/android”
android:duration=“2000”
android:fillAfter=“false”
an]]></description><category></category></item><item><title><![CDATA[Android 天气APP（十）继续优化]]></title><link>https://blog.youkuaiyun.com/Android_1314/article/details/124606545</link><guid>https://blog.youkuaiyun.com/Android_1314/article/details/124606545</guid><author>Android_1314</author><pubDate>Fri, 06 May 2022 11:29:46 +0800</pubDate><description><![CDATA[android:layout_width=“match_parent”
android:layout_height=“wrap_content”/&gt;

&lt;androidx.core.widget.NestedScrollView
android:overScrollMode=“never”
android:layout_width=“match_parent”
android:layout_height=“match_parent”&gt;
&lt;/androidx.core.widget.N]]></description><category></category></item><item><title><![CDATA[Android 增量更新完全解析 是增量不是热修复]]></title><link>https://blog.youkuaiyun.com/Android_1314/article/details/124606472</link><guid>https://blog.youkuaiyun.com/Android_1314/article/details/124606472</guid><author>Android_1314</author><pubDate>Fri, 06 May 2022 11:27:43 +0800</pubDate><description><![CDATA[${INSTALL_PROGRAM} bsdiff bspatch ${PREFIX}/bin
.ifndef WITHOUT_MAN
${INSTALL_MAN} bsdiff.1 bspatch.1 ${PREFIX}/man/man1
.endif
然后，重新执行make:
aaa:bsdiff-4.3 zhy$ make
cc -O3 -lbz2    bsdiff.c   -o bsdiff
cc -O3 -lbz2    bspatch.c   -o bspatch
bspatch.c:39:2]]></description><category></category></item><item><title><![CDATA[android 图表基本属性方法设置]]></title><link>https://blog.youkuaiyun.com/Android_1314/article/details/124606416</link><guid>https://blog.youkuaiyun.com/Android_1314/article/details/124606416</guid><author>Android_1314</author><pubDate>Fri, 06 May 2022 11:26:00 +0800</pubDate><description><![CDATA[//            //renderer.set
//            barChart.addView(mChartView, new LayoutParams(
//                    LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
//        } else
//            mChartView.repaint();
}
/**


@param colors


@return


*/
]]></description><category></category></item><item><title><![CDATA[Android 可能你想要的APK瘦身笔记]]></title><link>https://blog.youkuaiyun.com/Android_1314/article/details/124606356</link><guid>https://blog.youkuaiyun.com/Android_1314/article/details/124606356</guid><author>Android_1314</author><pubDate>Fri, 06 May 2022 11:24:13 +0800</pubDate><description><![CDATA[但是对于

出海应用APP，非洲，印度那些网络资源匮乏的地方，APP包体积还是特别敏感的
日活，流量比较大的APP,如微信，抖音等APP，对包体积还是比较关注的

所以今天还是把我之前对APP瘦身的笔记分享给大家，与此共勉（内容不包含插件化,Split APK等动态下发技术，Only客户端自己的优化）
APK包结构简介
APK包结构主要包含
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6nvuZr0E-1651807434688)(https://user-gold-cdn]]></description><category></category></item><item><title><![CDATA[Android中实现定时器的3种解决方法]]></title><link>https://blog.youkuaiyun.com/Android_1314/article/details/124587133</link><guid>https://blog.youkuaiyun.com/Android_1314/article/details/124587133</guid><author>Android_1314</author><pubDate>Thu, 05 May 2022 13:40:16 +0800</pubDate><description><![CDATA[Message&nbsp;message&nbsp;=&nbsp;new&nbsp;Message();


message.what&nbsp;=&nbsp;1;


handler.sendMessage(message);//&nbsp;发送消息


}&nbsp;catch&nbsp;(InterruptedException&nbsp;e)&nbsp;{


//&nbsp;TODO&nbsp;Auto-generated&nbsp;catch&nbsp;block


e.printStac..]]></description><category></category></item><item><title><![CDATA[Android~自定义View和事件分发]]></title><link>https://blog.youkuaiyun.com/Android_1314/article/details/124587066</link><guid>https://blog.youkuaiyun.com/Android_1314/article/details/124587066</guid><author>Android_1314</author><pubDate>Thu, 05 May 2022 13:36:26 +0800</pubDate><description><![CDATA[boolean   表示布尔值
integer   表示整型值
float   表示浮点值
fraction   表示百分数
enum   表示枚举值
flag   表示位运算
–&gt;





attrs.xml文件declare-styleable标签定义及相关属性


在布局文件中导入自定义的属性集。两种方法



xmlns:custom=“http://schemas.android.com/apk/res/com.example”

xmlns:custom=“http://schemas.]]></description><category></category></item><item><title><![CDATA[Android-音视频学习系列-(二)-交叉编译动态库、静态库的入门学习]]></title><link>https://blog.youkuaiyun.com/Android_1314/article/details/124587024</link><guid>https://blog.youkuaiyun.com/Android_1314/article/details/124587024</guid><author>Android_1314</author><pubDate>Thu, 05 May 2022 13:34:23 +0800</pubDate><description><![CDATA[如果出现如下字样，就证明配置成功了。


交叉编译在 Linux 上的环境变量配置(做一个参考，采坑之后的环境配置):

export NDK_GCC_x86=“/root/android/ndk/android-ndk-r17c/toolchains/x86-4.9/prebuilt/linux-x86_64/bin/i686-linux-android-gcc”
export NDK_GCC_x64=“/root/android/ndk/android-ndk-r17c/toolchains/x86_6]]></description><category></category></item><item><title><![CDATA[Android-怎么就不卡了呢之Choreographer]]></title><link>https://blog.youkuaiyun.com/Android_1314/article/details/124586998</link><guid>https://blog.youkuaiyun.com/Android_1314/article/details/124586998</guid><author>Android_1314</author><pubDate>Thu, 05 May 2022 13:32:40 +0800</pubDate><description><![CDATA[void doScheduleCallback(int callbackType) {
synchronized (mLock) {
if (!mFrameScheduled) {
final long now = SystemClock.uptimeMillis();
if (mCallbackQueues[callbackType].hasDueCallbacksLocked(now)) {
scheduleFrameLocked(now);
}
}
}
}
这个方法中先是做了一些判断，mFrameSc]]></description><category></category></item><item><title><![CDATA[Android-开发经验分享：挺重要的网络基础]]></title><link>https://blog.youkuaiyun.com/Android_1314/article/details/124586974</link><guid>https://blog.youkuaiyun.com/Android_1314/article/details/124586974</guid><author>Android_1314</author><pubDate>Thu, 05 May 2022 13:30:54 +0800</pubDate><description><![CDATA[1计算机网络体系结构
即经常看到的计算机网络体系的分层结构，理清这个还是有必要的，防止对Http和Tcp两个根本不在同一层的协议纠缠不清。 根据不同的参考模型，分层结构有几个不同的版本，如OSI模型以及TCP/IP模型，下面 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源	徽信搜索公众号【编程进阶路】 就以比较经常看到的的5层结构为例：

五层的体系结构至上往下，最终可以实现端对端之间的数据传输与通信，他们各自负责一些什么，最终如何实现端对端之间的通信？
1.应]]></description><category></category></item><item><title><![CDATA[Android-世界的活点地图-dumpsys（Android-Detail-工具）]]></title><link>https://blog.youkuaiyun.com/Android_1314/article/details/124586954</link><guid>https://blog.youkuaiyun.com/Android_1314/article/details/124586954</guid><author>Android_1314</author><pubDate>Thu, 05 May 2022 13:29:15 +0800</pubDate><description><![CDATA[因为程序在计算机中运行时，在内存、CPU、I/O等设备上的数据都是动态的（或者说是易失的），也就是说数据使用完或者发生异常就会丢掉。如果我想得到某些时刻的数据（有可能是调试程序 Bug 或者收集某些信息），就要把他转储（dump）为静态（如文件）的形式。否则，这些数据你永远都拿不到。
2、dump 转储的是什么内容（dump 的对象）？
其实上边已经提到了，就是将动态（易失）的数据，保存为静态的数据（持久数据）。像程序这种本来就保存在存储介质（如硬盘）中的数据，也就没有必要dump。
现在，dump作为&.]]></description><category></category></item><item><title><![CDATA[Android 面试：事件分发8连问]]></title><link>https://blog.youkuaiyun.com/Android_1314/article/details/124586894</link><guid>https://blog.youkuaiyun.com/Android_1314/article/details/124586894</guid><author>Android_1314</author><pubDate>Thu, 05 May 2022 13:25:02 +0800</pubDate><description><![CDATA[forward(q);
} else if (shouldDropInputEvent(q)) {
finish(q, false);
} else {
traceEvent(q, Trace.TRACE_TAG_VIEW);
final int result;
try {
result = onProcess(q);
} finally {
Trace.traceEnd(Trace.TRACE_TAG_VIEW);
}
apply(q, result);
}
}
}
如上所示：
1.QueuedInput]]></description><category></category></item></channel></rss>