<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[magic0908的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/magic0908</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; magic0908]]></copyright><item><title><![CDATA[Android ConstraintLayout使用进阶]]></title><link>https://blog.youkuaiyun.com/magic0908/article/details/109181739</link><guid>https://blog.youkuaiyun.com/magic0908/article/details/109181739</guid><author>magic0908</author><pubDate>Thu, 22 Oct 2020 14:20:11 +0800</pubDate><description><![CDATA[前言
曾经Android有五大布局，LinearLayout、FrameLayout、TableLayout、RelativeLayout和AbsoluteLayout，那会我们比较常用的布局就两三个，写xml的时候根据界面灵活选择布局，但是往往会面临布局嵌套过深的问题，阅读也不方便。随着Android生态的发展，Google后来推出了新的布局——ConstraintLayout（约束布局）。
我很快去学习并将其用在项目中，刚开始的时候觉得比较抽象难懂，各种不适应；一段时间过后，这玩意儿真香！
本文不打算讲]]></description><category></category></item><item><title><![CDATA[Android Material组件使用详解]]></title><link>https://blog.youkuaiyun.com/magic0908/article/details/101029876</link><guid>https://blog.youkuaiyun.com/magic0908/article/details/101029876</guid><author>magic0908</author><pubDate>Mon, 23 Sep 2019 14:01:37 +0800</pubDate><description><![CDATA[前言
我们在平时写布局时，当遇到按钮需要圆角、或者描边等，通常的方法是新建一个xml文件，在shape标签下写，然后通过setBackground(drawable)设置。这本来没什么问题，但是射击师会喜欢看起来和别人不一样的效果，也许是为了审（zhuang）美（bi），这个页面用4dp的圆角，那个页面用10dp的圆角，还要有描边……如果我们每个界面都新建个xml写shape，那么后期维护起来就像...]]></description><category></category></item><item><title><![CDATA[Android接入抖音分享踩坑之旅]]></title><link>https://blog.youkuaiyun.com/magic0908/article/details/100985121</link><guid>https://blog.youkuaiyun.com/magic0908/article/details/100985121</guid><author>magic0908</author><pubDate>Sat, 21 Sep 2019 20:14:05 +0800</pubDate><description><![CDATA[前言
抖音作为日活量过亿的产品，在今年年初，也终于上线了抖音开放平台，目前支持应用接入登录与分享。
刚好项目有个新需求，需要集成抖音登录与分享，由此开始了各种坑……
抖音开发者文档：https://open.douyin.com/platform/doc#key=Android-guide
导入依赖
1、在项目根目录build.gradle里添加maven：
allprojects {
    r...]]></description><category></category></item><item><title><![CDATA[Android BottomSheetDialog使用，实现网易云歌单底部弹窗]]></title><link>https://blog.youkuaiyun.com/magic0908/article/details/89180949</link><guid>https://blog.youkuaiyun.com/magic0908/article/details/89180949</guid><author>magic0908</author><pubDate>Wed, 10 Apr 2019 13:43:25 +0800</pubDate><description><![CDATA[概述
日常app开发中，对话框无疑是交互非常方便的载体，无论是app更新提示对话框还是评论列表对话框，可以减少不必要的页面跳转。今天我们的主题是Design Support Library中新增的控件BottomSheetDialog，顾名思义，就是底部弹出，下滑关闭的对话框。
没图没真香，我们先来看看效果图：
效果图
网易云效果

demo效果（丑了点，见谅）

基本使用
1、导入依赖
impl...]]></description><category></category></item><item><title><![CDATA[Android使用Rxjava、Retrofit处理json解析异常，只看这一篇就够了]]></title><link>https://blog.youkuaiyun.com/magic0908/article/details/87195805</link><guid>https://blog.youkuaiyun.com/magic0908/article/details/87195805</guid><author>magic0908</author><pubDate>Mon, 18 Feb 2019 15:00:59 +0800</pubDate><description><![CDATA[日常开发的时候，避免不了与后台打交道，最常见的就是前端发送请求，后台返回数据，然后将拿到的数据进行展示。这里，我使用的是Rxjava、Retrofit结合。
1、导入需要的Rxjava、Retrofit依赖：
//retrofit2
implementation 'com.squareup.retrofit2:retrofit:2.5.0'
implementation 'com.squareup...]]></description><category></category></item><item><title><![CDATA[Android仿微信无网络保存图片到相册]]></title><link>https://blog.youkuaiyun.com/magic0908/article/details/80242832</link><guid>https://blog.youkuaiyun.com/magic0908/article/details/80242832</guid><author>magic0908</author><pubDate>Tue, 08 May 2018 18:48:22 +0800</pubDate><description><![CDATA[今天在微信预览大图时，发现其在无网络的情况下也可以保存图片，我觉得这是个常见的需求，所以动手实现类似的需求，中间也踩了挺多坑，所以跟大家一起分享我踩过的坑。

知识点概览

1、Glide如何获取缓存的图片

2、Android文件的拷贝

3、保存的图片如何通知系统更新图库

=============分割线============

1、Glide如何获取缓存的图片

Glide4.x以下，加...]]></description><category></category></item><item><title><![CDATA[Android Handler的简单使用——随机点名案例]]></title><link>https://blog.youkuaiyun.com/magic0908/article/details/49535981</link><guid>https://blog.youkuaiyun.com/magic0908/article/details/49535981</guid><author>magic0908</author><pubDate>Sat, 31 Oct 2015 20:30:30 +0800</pubDate><description><![CDATA[前言

我们知道，Android的UI线程也叫主线程，工作线程（子线程）主要是负责执行耗时操作的线程，如果我们在子线程处理完事物后，需要通知UI线程更新界面。那么，子线程如何通知UI更新呢，这个就是通过Handler机制发送的消息来执行。

概念

首先来简单阐明一下几个关键字的概念：

1、Looper： 一个线程可以产生一个Looper对象，由它来管理此线程里的MessageQueue(消息队...]]></description><category></category></item></channel></rss>