<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[码出人生]]></title><description><![CDATA[生命不息，键盘不止！]]></description><link>https://blog.youkuaiyun.com/Cyx77520</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Cyx77520]]></copyright><item><title><![CDATA[Android原生计步功能的实现，记录当日步数（仿微信运动），不需要后台service]]></title><link>https://blog.youkuaiyun.com/Cyx77520/article/details/102895419</link><guid>https://blog.youkuaiyun.com/Cyx77520/article/details/102895419</guid><author>Cyx77520</author><pubDate>Mon, 04 Nov 2019 14:09:33 +0800</pubDate><description><![CDATA[Android原生计步功能的实现，记录当日步数（仿微信运动），不需要后台service
概述：通过调用Android4.4以上系统自带的计步传感器Sensor.TYPE_STEP_COUNTER，实现记录当日步数的逻辑，不需要后台service，因自带计步传感器记录的是开机以来所有的步数，所以需要自己处理跨天分割以及开关机的问题。
1.封装了StepUtil供外界调用
    /**
     *...]]></description><category></category></item><item><title><![CDATA[安卓原生自定义的埋点统计功能的实现（仿友盟统计）]]></title><link>https://blog.youkuaiyun.com/Cyx77520/article/details/102743895</link><guid>https://blog.youkuaiyun.com/Cyx77520/article/details/102743895</guid><author>Cyx77520</author><pubDate>Fri, 25 Oct 2019 15:29:54 +0800</pubDate><description><![CDATA[仿友盟统计安卓原生自定义的埋点统计功能的实现
一般的统计需求我们直接通过友盟统计或者talkingdata等第三方的SDK就能满足，但是如果统计的维度较多，参数需要自定义等情况，并且需要上传数据至自己公司后台的情况下，这时候就只能进行自定义了。以下为自定义的埋点统计的工具类，核心代码如下：
package com.xx.xx.utils;

import android.content.Conte...]]></description><category></category></item><item><title><![CDATA[安卓自定义View之带动画的饼状图]]></title><link>https://blog.youkuaiyun.com/Cyx77520/article/details/102729705</link><guid>https://blog.youkuaiyun.com/Cyx77520/article/details/102729705</guid><author>Cyx77520</author><pubDate>Thu, 24 Oct 2019 19:07:40 +0800</pubDate><description><![CDATA[安卓自定义View之带动画的饼状图
因为是金融类的app，包含有很多资产数据，需求是使用饼状图展示总资产的不同资产组成，不同资产间有白色间隔线，较大的资产会有放大的动画效果，整体进行动画绘制展示，效果如下：

整体代码如下（全网唯一）：
package com.xx.xx.ui.view.widget;

import android.animation.ValueAnimator;
import...]]></description><category></category></item><item><title><![CDATA[安卓仿余额宝的资产数字跳动的动画效果]]></title><link>https://blog.youkuaiyun.com/Cyx77520/article/details/102728731</link><guid>https://blog.youkuaiyun.com/Cyx77520/article/details/102728731</guid><author>Cyx77520</author><pubDate>Thu, 24 Oct 2019 18:02:39 +0800</pubDate><description><![CDATA[仿余额宝的资产数字跳动的动画效果

因为是金融类的app，需求是想要实现总资产数字跳动的动画展示效果，这个需求本身没有什么难度，无非是使用属性动画来实现（优化前）：
ValueAnimator animator = ValueAnimator.ofInt(mStartValue, mEndValue);
                animator.setDuration(duration);...]]></description><category></category></item><item><title><![CDATA[Flutter入门：在Windows上搭建Flutter开发环境]]></title><link>https://blog.youkuaiyun.com/Cyx77520/article/details/97273998</link><guid>https://blog.youkuaiyun.com/Cyx77520/article/details/97273998</guid><author>Cyx77520</author><pubDate>Thu, 25 Jul 2019 17:15:58 +0800</pubDate><description><![CDATA[使用镜像
由于在国内访问Flutter有时可能会受到限制，Flutter官方为中国开发者搭建了临时镜像，大家可以将如下环境变量加入到用户环境变量中：
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn

必要的工具
工具: Flut...]]></description><category></category></item><item><title><![CDATA[仿PC端12306的刷新loading动画的自定义view]]></title><link>https://blog.youkuaiyun.com/Cyx77520/article/details/85303981</link><guid>https://blog.youkuaiyun.com/Cyx77520/article/details/85303981</guid><author>Cyx77520</author><pubDate>Thu, 27 Dec 2018 20:25:31 +0800</pubDate><description><![CDATA[想法由来
大家肯定都在PC端的12306网站上买过票吧，最近的这两天又去买票的时候留意到这个刷新loading，觉得还是挺好看的，所以就想动手实现下，顺便把自定义view和动画的知识稍微再熟悉一遍。
原12306的刷新图：

实现的效果图如下：

自定义view的代码如下（暂且就叫PassView吧）
package com.example.yanxu.loading.view;

import ...]]></description><category></category></item><item><title><![CDATA[Android仿微信发起群聊的列表样式]]></title><link>https://blog.youkuaiyun.com/Cyx77520/article/details/80068750</link><guid>https://blog.youkuaiyun.com/Cyx77520/article/details/80068750</guid><author>Cyx77520</author><pubDate>Tue, 24 Apr 2018 18:57:16 +0800</pubDate><description><![CDATA[场景：今天一个朋友微信找我说碰到个问题让我看下，就是仿微信发起群聊的那个列表样式，其实这个功能实现起来没什么困难的地方，但是他遇到的问题是，最后的那个“搜索”，随着前边列表的增加或删除动态的移动，他不知道怎么处理，我就帮忙看了下。其实网上也有类似仿微信发起群聊的文章，但是都是那个“搜索”固定在右侧的，所以这里需要特殊处理下。

方案： 
列表的样式，通过使用RecyclerView来实现 
最后的...]]></description><category></category></item><item><title><![CDATA[Android屏幕适配之加载网络图片的适配攻略]]></title><link>https://blog.youkuaiyun.com/Cyx77520/article/details/80006120</link><guid>https://blog.youkuaiyun.com/Cyx77520/article/details/80006120</guid><author>Cyx77520</author><pubDate>Thu, 19 Apr 2018 16:29:53 +0800</pubDate><description><![CDATA[关于Android的屏幕适配方案网上有很多很多，很多大神讲的很全面也都很好，所以这里我就不班门弄斧了，这篇文章主要介绍安卓开发过程中加载网络图片（本文中加载图片的类库为Picasso），布局中ImageView不同宽高展示的适配方案，主要分为以下三大类：

一、ImageView宽度小于屏幕宽度的（即原图宽高确定，且在原型图中宽高有明确标注的），比如item中的一个图片元素，或者其他布局情况下的一...]]></description><category></category></item><item><title><![CDATA[解决Android7.0目录访问的异常Caused by: android.os.FileUriExposedException: file:]]></title><link>https://blog.youkuaiyun.com/Cyx77520/article/details/79916181</link><guid>https://blog.youkuaiyun.com/Cyx77520/article/details/79916181</guid><author>Cyx77520</author><pubDate>Thu, 12 Apr 2018 16:41:13 +0800</pubDate><description><![CDATA[场景：正在开发的应用中有分享这样一个功能，这个分享是需要先把一篇pdf格式的文章下载到本地，然后再去进行分享的操作，在Android7.0之前都没有问题，但是7.0及以后的版本就会报这个异常，其实不止这一个场景，在其他需要访问目录文件的场景，也是会报这个异常



原因：从Android7.0为了提高私有文件的安全性，面向Android N或更高版本的应用私有目录将被限制访问，也就是说从Andro...]]></description><category></category></item><item><title><![CDATA[Android开发中控制ScrollView直接滚动到顶部或底部]]></title><link>https://blog.youkuaiyun.com/Cyx77520/article/details/79900949</link><guid>https://blog.youkuaiyun.com/Cyx77520/article/details/79900949</guid><author>Cyx77520</author><pubDate>Wed, 11 Apr 2018 18:45:18 +0800</pubDate><description><![CDATA[场景：开发的过程，如果一个页面子View比较多，一个屏幕放不下，此时我们大多会采用ScrollView来实现。然后产品可能会提这种需求，比如某个子View在最底部，产品想要页面进入就直接滑到最底部；或者是当页面滑到最底部时，点击某个按钮直接滑到顶部。

还是先呈上方法，然后再来具体分析

mScrollView.fullScroll(ScrollView.FOCUS_UP);//滑到顶部
mScr...]]></description><category></category></item><item><title><![CDATA[完美解决三星手机拍照后横竖屏切换导致的回调为null以致程序崩溃的问题（包括三星note3的特殊适配）]]></title><link>https://blog.youkuaiyun.com/Cyx77520/article/details/79174414</link><guid>https://blog.youkuaiyun.com/Cyx77520/article/details/79174414</guid><author>Cyx77520</author><pubDate>Fri, 26 Jan 2018 16:54:04 +0800</pubDate><description><![CDATA[场景：安卓开发中我们经常会有拍照上传的需求，比如上传图片，或者上传头像等等，方法也比较常规，通过调用startActivityForResult(Intent intent, int requestCode)方法调起系统的拍照，然后在onActivityResult(int requestCode, int resultCode, Intent data)方法中对回调结果进行处理。相信很多同学会遇]]></description><category></category></item><item><title><![CDATA[完美解决部分安卓手机调用系统拍照上传时图片旋转问题]]></title><link>https://blog.youkuaiyun.com/Cyx77520/article/details/79172676</link><guid>https://blog.youkuaiyun.com/Cyx77520/article/details/79172676</guid><author>Cyx77520</author><pubDate>Fri, 26 Jan 2018 15:10:57 +0800</pubDate><description><![CDATA[实际开发中我们经常会有拍照上传图片，或者上传头像的需求，但是经常会发现部分手机，例如三星等，拍照后的图片会产生不同角度的旋转，原因是这些手机拍照后会有一个自动旋转的过程，具体解决思路也很简单，我们来看下具体代码：

//首先我们先获取当前图片的旋转角度
    public static int readPictureDegree(String path) {
        int degree]]></description><category></category></item><item><title><![CDATA[View的事件体系之View的位置参数]]></title><link>https://blog.youkuaiyun.com/Cyx77520/article/details/79131894</link><guid>https://blog.youkuaiyun.com/Cyx77520/article/details/79131894</guid><author>Cyx77520</author><pubDate>Mon, 22 Jan 2018 18:00:13 +0800</pubDate><description><![CDATA[如图所示，为View的位置坐标与父容器的关系图，此图来源于老任的《Android开发艺术探索》这本书， 
感兴趣的同学可以去看下，以此我们来简单介绍下View的位置参数的相关知识。 
首先是4个基本属性top、left、right、bottom 
如图，这几个属性，都是View相对于父容器的信息 
top：左上角的纵坐标 
left：左上角的横坐标 
right：右下角的横坐标 
bottom：右]]></description><category></category></item><item><title><![CDATA[从Android源码入手解决ScrollView与内部控件的滑动冲突问题]]></title><link>https://blog.youkuaiyun.com/Cyx77520/article/details/79131469</link><guid>https://blog.youkuaiyun.com/Cyx77520/article/details/79131469</guid><author>Cyx77520</author><pubDate>Mon, 22 Jan 2018 17:36:30 +0800</pubDate><description><![CDATA[如图所示，父布局是一个ScrollView，内部一个子View-SelectView是一个自定义的水平滑动的View，当手指放在SelectView上左右滑动时，会与ScrollView的上下滑动事件产生冲突。平时我们也会碰到类似的这种ScrollView与内部控件的滑动冲突问题，比如嵌套ListView等等，先来说说如何解决吧



SelectView.setOnTouchListener(n]]></description><category></category></item><item><title><![CDATA[ClassCastException: ...RelativeLayout$LayoutParams cannot be cast to ...AbsListView$LayoutParams]]></title><link>https://blog.youkuaiyun.com/Cyx77520/article/details/79025567</link><guid>https://blog.youkuaiyun.com/Cyx77520/article/details/79025567</guid><author>Cyx77520</author><pubDate>Wed, 10 Jan 2018 16:38:15 +0800</pubDate><description><![CDATA[java.lang.ClassCastException: android.widget.RelativeLayout LayoutParams cannot be cast to android.widget.AbsListView LayoutParams

原因：FrameLayout的父控件是一个LinearLayout控件，LinearLayout为子控件分配空间的时候，获取FrameL]]></description><category></category></item><item><title><![CDATA[Android开发Snackbar的简单使用]]></title><link>https://blog.youkuaiyun.com/Cyx77520/article/details/79024123</link><guid>https://blog.youkuaiyun.com/Cyx77520/article/details/79024123</guid><author>Cyx77520</author><pubDate>Wed, 10 Jan 2018 15:12:38 +0800</pubDate><description><![CDATA[Snackbar其实可以理解为是Toast的升级版，因为Toast只是有一个告知的功能，但是并不能给用户选择的机会，而Snackbar可以很好地解决这个问题，它的使用方法类似Toast，效果类似Dialog，这里简单介绍下使用方法

场景：比如当用户点击退出登录时，也许用户是误操作，那么此时就可以在退出登录按钮的点击事件里面加上Snackbar来给用户一个简单的交互

Snackbar bar =]]></description><category></category></item><item><title><![CDATA[Android存储之SharePreferences保存Map]]></title><link>https://blog.youkuaiyun.com/Cyx77520/article/details/79016566</link><guid>https://blog.youkuaiyun.com/Cyx77520/article/details/79016566</guid><author>Cyx77520</author><pubDate>Tue, 09 Jan 2018 19:37:36 +0800</pubDate><description><![CDATA[众所周知SharePreferences是安卓中一个轻量级的存储类，可以存储字符串等类型的数据，但如何通过SP保存一个Map可能有很多同学不知道怎么做，这里简单介绍下

场景：工作需要动态保存一个map，每次需要进行查询是否有某个元素，有的话就不保存，没有就保存 
//取出存储的map

public static Map getMap(Context context) {
    Map def]]></description><category></category></item><item><title><![CDATA[去掉RecyclerView等可滑动控件滑动到边缘时的阴影（光晕）效果]]></title><link>https://blog.youkuaiyun.com/Cyx77520/article/details/79016373</link><guid>https://blog.youkuaiyun.com/Cyx77520/article/details/79016373</guid><author>Cyx77520</author><pubDate>Tue, 09 Jan 2018 19:14:24 +0800</pubDate><description><![CDATA[RecyclerView等可滑动控件默认的是会有滚动条以及滑动到边缘时的阴影（光晕）效果的，那么怎样去掉这两个默认属性呢，在这里简单的介绍一下


滚动条效果 
1、通过xml文件设置 
android:scrollbars=”“有三个属性 
a.none:去掉滚动条 
b.horizontal:设置水平的滚动条 
c.vertical:设置垂直的滚动条 
2、通过java代码设置 
a.Recy]]></description><category></category></item><item><title><![CDATA[AndroidManifest清单文件合并失败 Error:Execution...Manifest merger failed with multiple errors, see logs]]></title><link>https://blog.youkuaiyun.com/Cyx77520/article/details/53537091</link><guid>https://blog.youkuaiyun.com/Cyx77520/article/details/53537091</guid><author>Cyx77520</author><pubDate>Fri, 09 Dec 2016 11:44:56 +0800</pubDate><description><![CDATA[Error:Execution failed for task ‘:app:processDebugManifest’.> Manifest merger failed with multiple errors, see logs异常提示：清单文件合并失败 
    异常情形描述：更换极光推送的JPUSH_APPKEY导致（或在其他更改清单文件配置的情况下也可能会出现） 
    解决方法一：too]]></description><category></category></item><item><title><![CDATA[安卓开发异常rx.exceptions.OnErrorNotImplementedException: Must be called from main thread of fragment host]]></title><link>https://blog.youkuaiyun.com/Cyx77520/article/details/53375638</link><guid>https://blog.youkuaiyun.com/Cyx77520/article/details/53375638</guid><author>Cyx77520</author><pubDate>Mon, 28 Nov 2016 11:36:53 +0800</pubDate><description><![CDATA[rx.exceptions.OnErrorNotImplementedException: Must be called from main thread of fragment host异常提示：必须在主线程中执行
异常描述：我在执行某个操作时出现的异常，类似跳转到首页等的页面跳转
异常解决方案：创建一个线程，在创建的线程里面执行原来想要执行的代码，new 一个handler调用post发送消息]]></description><category></category></item></channel></rss>