<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[yeaper_yeo的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/yypccc</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; yypccc]]></copyright><item><title><![CDATA[Android富文本编辑器]]></title><link>https://blog.youkuaiyun.com/yypccc/article/details/104355301</link><guid>https://blog.youkuaiyun.com/yypccc/article/details/104355301</guid><author>yypccc</author><pubDate>Mon, 17 Feb 2020 11:45:52 +0800</pubDate><description><![CDATA[Android富文本编辑器，一款支持撤销、加粗、斜体、下划线、有序无序列表、对齐、改文字大小、改文字颜色、插入图片、插入视频等功能，并且可设置cookie，自定义素材操作菜单的的编辑器。
github地址：https://github.com/yeaper/RichEditor

1.控件使用
RichEditor是富文本编辑器，EditorOpMenuView是操作栏控件，两个需要配合使用，xm...]]></description><category></category></item><item><title><![CDATA[exifinterface获取图片属性并旋转]]></title><link>https://blog.youkuaiyun.com/yypccc/article/details/103694995</link><guid>https://blog.youkuaiyun.com/yypccc/article/details/103694995</guid><author>yypccc</author><pubDate>Wed, 25 Dec 2019 10:46:11 +0800</pubDate><description><![CDATA[exifinterface获取图片属性并旋转
1、加入依赖
implementation 'com.android.support:exifinterface:27.1.1'

2、旋转代码
Matrix mat = new Matrix();
Bitmap bitmap = BitmapFactory.decodeFile(path, options);
ExifInterface ei = n...]]></description><category></category></item><item><title><![CDATA[ViewPager层叠卡片效果]]></title><link>https://blog.youkuaiyun.com/yypccc/article/details/87858528</link><guid>https://blog.youkuaiyun.com/yypccc/article/details/87858528</guid><author>yypccc</author><pubDate>Thu, 21 Feb 2019 15:15:05 +0800</pubDate><description><![CDATA[层叠片卡效果

说明
通过设置 ViewPager 的 PageTransformer 实现卡片层叠效果，支持左层叠和右层叠两种效果
添加依赖
1、 主工程 build.gradle 添加仓库地址:
allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

2、 ...]]></description><category></category></item><item><title><![CDATA[自定义View之Draw过程]]></title><link>https://blog.youkuaiyun.com/yypccc/article/details/86636717</link><guid>https://blog.youkuaiyun.com/yypccc/article/details/86636717</guid><author>yypccc</author><pubDate>Fri, 25 Jan 2019 10:01:07 +0800</pubDate><description><![CDATA[一、单一View

二、ViewGroup


]]></description><category></category></item><item><title><![CDATA[自定义View之Layout过程]]></title><link>https://blog.youkuaiyun.com/yypccc/article/details/86636680</link><guid>https://blog.youkuaiyun.com/yypccc/article/details/86636680</guid><author>yypccc</author><pubDate>Fri, 25 Jan 2019 09:58:17 +0800</pubDate><description><![CDATA[一、单一View

二、ViewGroup


]]></description><category></category></item><item><title><![CDATA[自定义View之Measure过程]]></title><link>https://blog.youkuaiyun.com/yypccc/article/details/86605952</link><guid>https://blog.youkuaiyun.com/yypccc/article/details/86605952</guid><author>yypccc</author><pubDate>Wed, 23 Jan 2019 10:37:42 +0800</pubDate><description><![CDATA[一、测量规格MeasureSpec说明
1、结构说明

2、使用说明
/**
  * MeasureSpec类的具体使用
  **/

// 1. 获取测量模式（Mode）
int specMode = MeasureSpec.getMode(measureSpec)

// 2. 获取测量大小（Size）
int specSize = MeasureSpec.getSize(measureSpe...]]></description><category></category></item><item><title><![CDATA[两个安卓模拟器进行Socket通信 — TCP方式]]></title><link>https://blog.youkuaiyun.com/yypccc/article/details/86084672</link><guid>https://blog.youkuaiyun.com/yypccc/article/details/86084672</guid><author>yypccc</author><pubDate>Tue, 08 Jan 2019 17:00:35 +0800</pubDate><description><![CDATA[在一台电脑上，进行两个安卓模拟器的Socket通信时，因为host都是127.0.0.1，所以连接一直失败。
解决方法：
1、运行服务端模拟器，端口配置为8880
2、客户端模拟器，host配置为10.0.2.2，端口配置为8881
在终端执行命令：
adb -s emulator-5554 forward tcp:8881 tcp:8880

它会将 8881 端口的数据全部重定向到 8880 ...]]></description><category></category></item><item><title><![CDATA[滑动知识相关整理]]></title><link>https://blog.youkuaiyun.com/yypccc/article/details/86080554</link><guid>https://blog.youkuaiyun.com/yypccc/article/details/86080554</guid><author>yypccc</author><pubDate>Tue, 08 Jan 2019 15:58:25 +0800</pubDate><description><![CDATA[一、RecyclerView滑动监听
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
	@Override
	public void onScrollStateChanged(RecyclerView recyclerView, int newState){ //滑动状态改变
	    super.onS...]]></description><category></category></item><item><title><![CDATA[ConstraintLayout约束布局——实现左文右图效果]]></title><link>https://blog.youkuaiyun.com/yypccc/article/details/85248617</link><guid>https://blog.youkuaiyun.com/yypccc/article/details/85248617</guid><author>yypccc</author><pubDate>Tue, 25 Dec 2018 15:28:33 +0800</pubDate><description><![CDATA[先来看下想要的效果：
左文右图，标题最多显示2行，时间和图片底部对齐

1、问题说明： 在这个布局中，左边的文字和时间是一个整体，右边的图片是一个整体，让图片只位于文字右侧或者时间右侧都是不对的。
（1）图片位于文字右侧：当文字较少时，时间可能会遮挡图片。
（2）图片位于时间右侧：当文字较多时，文字可能会遮挡图片。

对应代码如下：
 &amp;lt;android.support.constraint....]]></description><category></category></item><item><title><![CDATA[Android 一键清除其他app的数据（快捷方便）]]></title><link>https://blog.youkuaiyun.com/yypccc/article/details/84887923</link><guid>https://blog.youkuaiyun.com/yypccc/article/details/84887923</guid><author>yypccc</author><pubDate>Fri, 07 Dec 2018 22:27:25 +0800</pubDate><description><![CDATA[如何在自己的app里面，一键清除其他应用的数据？？？

看了很多网上的教程，80%都说需要将自己的app打包为系统应用，我想说这也太麻烦了吧，那几个aidl文件就得折腾好久，再别说拿到对应手机系统的签名了。

下面介绍一种简单快速地做法：

一、手机必须已经获取root权限

很多app可以帮你做到，比如：root精灵，SuperSU，KingRoot等

 

二、为自己开发的应用获取Root权...]]></description><category></category></item><item><title><![CDATA[部署war包到阿里云服务器]]></title><link>https://blog.youkuaiyun.com/yypccc/article/details/81513077</link><guid>https://blog.youkuaiyun.com/yypccc/article/details/81513077</guid><author>yypccc</author><pubDate>Wed, 08 Aug 2018 18:05:25 +0800</pubDate><description><![CDATA[经过两天的折腾， 终于把 Java web 项目部署到阿里云服务器了。 
网上的教程有些太老了，现在整理下新的东西，下面来讲讲踩坑的过程。


  配置清单
  
  
  web 开发软件：Intellij idea 2018
  阿里云服务器：Windows 8
  MySQL：5.1.6
  Tomcat：8.5
  


一、使用 intellij idea 打包 web 项目

1、点击...]]></description><category></category></item><item><title><![CDATA[自定义 View 添加类似 android:layout_gravity 属性]]></title><link>https://blog.youkuaiyun.com/yypccc/article/details/81063186</link><guid>https://blog.youkuaiyun.com/yypccc/article/details/81063186</guid><author>yypccc</author><pubDate>Mon, 16 Jul 2018 12:46:00 +0800</pubDate><description><![CDATA[平时自定义View，会遇到类似 android:layout_gravity=”left|bottom” 这样的属性。 
本文就简单讲讲这种属性怎么在 styles.xml 中定义。

其实，就是 attr 属性不设置类型，然后那里面所有的变量值使用 flag 声明，如下：

&amp;lt;declare-styleable name=&quot;XShadow&quot;&amp;gt;
   &amp;lt;attr name=&quot;sh...]]></description><category></category></item><item><title><![CDATA[ARouter自定义服务流程]]></title><link>https://blog.youkuaiyun.com/yypccc/article/details/80513488</link><guid>https://blog.youkuaiyun.com/yypccc/article/details/80513488</guid><author>yypccc</author><pubDate>Wed, 30 May 2018 17:40:06 +0800</pubDate><description><![CDATA[1、声明服务接口

public interface IHomeProvider extends IBaseProvider {
    //Service
    String HOME_MAIN_SERVICE = &amp;quot;/home/main/service&amp;quot;;

    void toast(String msg);
}


2、实现服务接口

@Route(path = IHomeProvid...]]></description><category></category></item><item><title><![CDATA[android:pathData 属性]]></title><link>https://blog.youkuaiyun.com/yypccc/article/details/80417589</link><guid>https://blog.youkuaiyun.com/yypccc/article/details/80417589</guid><author>yypccc</author><pubDate>Wed, 23 May 2018 11:29:34 +0800</pubDate><description><![CDATA[先来说明下，大写字母表示绝对位置，小写字母表示相对前一个点的位置

一、直线 
（1）只标注点

x、y 分别表示点的横、纵坐标，不做绘制操作


  M x, y


（2）画线

L 用来画某个点到（x, y）的直线


  L x, y 


H 用来画横坐标的线，参数表示直线长度


  H x


V 用来画纵坐标的线，参数表示直线长度


  V y


（3）闭合

L 起点坐标 可...]]></description><category></category></item><item><title><![CDATA[android.dexOptions.javaMaxHeapSize 与 org.gradle.jvmargs]]></title><link>https://blog.youkuaiyun.com/yypccc/article/details/80322912</link><guid>https://blog.youkuaiyun.com/yypccc/article/details/80322912</guid><author>yypccc</author><pubDate>Tue, 15 May 2018 14:51:10 +0800</pubDate><description><![CDATA[如果在模块的 build.gradle 文件（控制着 DEX 编译器的堆大小）中为 android.dexOptions.javaMaxHeapSize 定义值， 
则需要将 Gradle 的堆大小设置为比 javaMaxHeapSize 属性设置的值大 512 MB 并且至少为 1536 MB。

例如：如果将 javaMaxHeapSize 设为 1280 MB，则必须将 setting.gr...]]></description><category></category></item><item><title><![CDATA[Instant Run默认启动的条件]]></title><link>https://blog.youkuaiyun.com/yypccc/article/details/80322764</link><guid>https://blog.youkuaiyun.com/yypccc/article/details/80322764</guid><author>yypccc</author><pubDate>Tue, 15 May 2018 14:43:09 +0800</pubDate><description><![CDATA[
使用调试构建变体构建您的应用。 
使用 Android Plugin for Gradle 2.3.0 或更高版本。 在应用的模块级
build.gradle 文件中将 minSdkVersion 设置为 15 或更高。 
点击 Run ，将您的应用部署到运行 Android 5.0（API 级别 21）及更高版本的设备上。
...]]></description><category></category></item><item><title><![CDATA[Android库相关知识整理]]></title><link>https://blog.youkuaiyun.com/yypccc/article/details/80306451</link><guid>https://blog.youkuaiyun.com/yypccc/article/details/80306451</guid><author>yypccc</author><pubDate>Mon, 14 May 2018 10:33:18 +0800</pubDate><description><![CDATA[一. 引入库模块

要在另一个应用模块中使用您的 Android 库的代码，请按以下步骤操作：

1、通过两种方式之一将库添加到您的项目（如果您是在相同项目中创建的库模块，则该模块已经存在，您可以跳过此步骤）：


添加已编译的 AAR（或 JAR）文件： 
点击 File &amp;amp;gt; New Module。
依次点击 Import .JAR/.AAR Package 和 Next。
输入 AAR ...]]></description><category></category></item><item><title><![CDATA[Bitmap、BitmapFactory、BitmapFactory.Options知识整理]]></title><link>https://blog.youkuaiyun.com/yypccc/article/details/80104935</link><guid>https://blog.youkuaiyun.com/yypccc/article/details/80104935</guid><author>yypccc</author><pubDate>Fri, 27 Apr 2018 10:58:34 +0800</pubDate><description><![CDATA[1.Bitmap

1.1非静态方法

    public void recycle()——回收位图占用的内存空间，把位图标记为Dead
    public final boolean isRecycled() ——判断位图内存是否已释放
    public final int getWidth()——获取位图的宽度
    public final int getHeight()——获取位...]]></description><category></category></item><item><title><![CDATA[Android音频播放—MediaPlayer]]></title><link>https://blog.youkuaiyun.com/yypccc/article/details/80090837</link><guid>https://blog.youkuaiyun.com/yypccc/article/details/80090837</guid><author>yypccc</author><pubDate>Thu, 26 Apr 2018 11:36:11 +0800</pubDate><description><![CDATA[先来看看 MediaPlayer 的生命周期：



这张状态转换图清晰的描述了 MediaPlayer 的各个状态，也列举了主要的方法的调用时序，每种方法只能在一些特定的状态下使用，如果使用时 MediaPlayer 的状态不正确则会引发 IllegalStateException 异常。

Idle 状态：当使用 new() 方法创建一个 MediaPlayer 对象或者调用了其 reset(...]]></description><category></category></item><item><title><![CDATA[Android音频录制—MediaRecorder]]></title><link>https://blog.youkuaiyun.com/yypccc/article/details/80090549</link><guid>https://blog.youkuaiyun.com/yypccc/article/details/80090549</guid><author>yypccc</author><pubDate>Thu, 26 Apr 2018 10:41:25 +0800</pubDate><description><![CDATA[MediaRecorder （基于文件录音） 
集成了录音，编码，压缩等，支持少量的音频格式文件。 
优点：封装度很高，操作简单 
缺点：无法实现实时处理音频，输出的音频格式少。

首先来看看 MediaRecorder 的生命周期：



从生命周期中可以看出，录制音频的基本步骤如下：



MediaRecorder mMediaRecorder= new MediaRecorder();
/...]]></description><category></category></item></channel></rss>