<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[xj531的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/xj531</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; xj531]]></copyright><item><title><![CDATA[Java DES 加密]]></title><link>https://blog.youkuaiyun.com/xj531/article/details/115737991</link><guid>https://blog.youkuaiyun.com/xj531/article/details/115737991</guid><author>xj531</author><pubDate>Thu, 15 Apr 2021 20:17:58 +0800</pubDate><description><![CDATA[/**
 *  参照 Android 4.4.2的源码DES.java 主要解决的问题：以前的DesUtisl巨耗内存 加密360字节，需要耗内存1.7M
 * 新算法内存消耗：需要加密长度一样的result串.
 */
public class DesUtil {

    public static final int FLAG_ENCRYPT = 1;

    public static final int FLAG_DECRYPT = 0;

    // 登录时的加密密钥
    public.]]></description><category></category></item><item><title><![CDATA[Python访问手机目录]]></title><link>https://blog.youkuaiyun.com/xj531/article/details/107834124</link><guid>https://blog.youkuaiyun.com/xj531/article/details/107834124</guid><author>xj531</author><pubDate>Thu, 06 Aug 2020 10:52:11 +0800</pubDate><description><![CDATA[这里写自定义目录标题python访问手机SD卡目录文件
python访问手机SD卡目录文件

下面方法用于python判断手机中某个文件是否存在

import os
path = os.popen('adb shell ls sdcard/test.txt').read().strip()
print path
if 'No such file or directory' in path:
    print False
else:
    print True

如果SD卡根目录中存在test.txt文]]></description><category></category></item><item><title><![CDATA[Android 小游戏 贪吃蛇]]></title><link>https://blog.youkuaiyun.com/xj531/article/details/103629497</link><guid>https://blog.youkuaiyun.com/xj531/article/details/103629497</guid><author>xj531</author><pubDate>Fri, 20 Dec 2019 11:15:37 +0800</pubDate><description><![CDATA[最近弟弟老师让做个贪吃蛇小游戏，帮他搞了一个，记录一下

先看效果图


]]></description><category></category></item><item><title><![CDATA[Android小游戏 打地鼠]]></title><link>https://blog.youkuaiyun.com/xj531/article/details/80271761</link><guid>https://blog.youkuaiyun.com/xj531/article/details/80271761</guid><author>xj531</author><pubDate>Tue, 17 Dec 2019 13:44:56 +0800</pubDate><description><![CDATA[刚毕业时候写的一个小游戏，今天突然看到了，想起以前的工作，同事，好多事情还历历在目，愿大家都过得开心。 


步入正题：因为当时很菜，所以写的很简单，很粗陋，但是勉强能用，先看下效果不会插动图，只能凑合着看了： 









游戏实现起来采用了投机取巧的方法，比较简单，功能有：最高分记录，背景音乐播放，游戏；设计思路：通过对imageview切换不同的背景图片达到地鼠出现，地鼠被打，地鼠消失...]]></description><category></category></item><item><title><![CDATA[弹性动画的实现]]></title><link>https://blog.youkuaiyun.com/xj531/article/details/103258402</link><guid>https://blog.youkuaiyun.com/xj531/article/details/103258402</guid><author>xj531</author><pubDate>Tue, 26 Nov 2019 17:27:37 +0800</pubDate><description><![CDATA[使用Facebook推出的rebound实现
先看下效果

一、导入依赖

]]></description><category></category></item><item><title><![CDATA[Android U盘（USB）直接拔出导致进程被杀死]]></title><link>https://blog.youkuaiyun.com/xj531/article/details/88944648</link><guid>https://blog.youkuaiyun.com/xj531/article/details/88944648</guid><author>xj531</author><pubDate>Mon, 01 Apr 2019 11:39:49 +0800</pubDate><description><![CDATA[现象：
拔出U盘文件管理器会被系统杀死：

04-01 11:30:47.252 1855-1894/system_process I/ActivityManager: Killing 11673:com.kangdexin.kdxfilemanager/1000 (adj 0): stop com.xxx.filemanager
04-01 11:31:25.736 1343-1352/? W/...]]></description><category></category></item><item><title><![CDATA[Android模拟器Genymotion安装部署]]></title><link>https://blog.youkuaiyun.com/xj531/article/details/88683885</link><guid>https://blog.youkuaiyun.com/xj531/article/details/88683885</guid><author>xj531</author><pubDate>Wed, 20 Mar 2019 11:23:22 +0800</pubDate><description><![CDATA[一、登陆账号（或先注册）
打开Genymotion 官网，https://www.genymotion.com/，点击右上角sing in图标进行登陆或者注册；

如果已经有账号，则直接登陆，若没有，则点击create an account注册

注册成功后，需要进行验证激活账号，激活链接会发送到你注册的邮箱中，记得一定要进行激活操作！！
二、下载Genymotion
下载地址为https://w...]]></description><category></category></item><item><title><![CDATA[自定义View实例（三）滑动开关]]></title><link>https://blog.youkuaiyun.com/xj531/article/details/88015917</link><guid>https://blog.youkuaiyun.com/xj531/article/details/88015917</guid><author>xj531</author><pubDate>Thu, 28 Feb 2019 10:17:51 +0800</pubDate><description><![CDATA[自定义View的步骤
通过继承view类自定义view步骤如下

实现view构造方法
测量view的大小，即重写onMeasure方法
绘制view，即重写onDraw方法
继承自view一般不需要重写onLayout方法
这次我们实现一个滑动的开关，效果见图：
代码中有详细的注释如下：

package com.car.customview.view;

import android.cont...]]></description><category></category></item><item><title><![CDATA[自定义View实例（二）广告轮播]]></title><link>https://blog.youkuaiyun.com/xj531/article/details/87981556</link><guid>https://blog.youkuaiyun.com/xj531/article/details/87981556</guid><author>xj531</author><pubDate>Wed, 27 Feb 2019 17:24:59 +0800</pubDate><description><![CDATA[学习使用自定义View实现一个可以自动无限循环轮播的广告轮播图，效果图如下：


具体实现思路：

首先利用view pager实现图片轮播
使用handle发送延时消息来实现图片自动播放
通过设置viewpager的item数量为Integer.MAX_VALUE，然后在adapter中获取当前位置item的方法里对position和我们实际的item数量进行求余来获取当前的item，以此达到...]]></description><category></category></item><item><title><![CDATA[自定义View实例（一）仿优酷菜单]]></title><link>https://blog.youkuaiyun.com/xj531/article/details/87971559</link><guid>https://blog.youkuaiyun.com/xj531/article/details/87971559</guid><author>xj531</author><pubDate>Wed, 27 Feb 2019 14:02:24 +0800</pubDate><description><![CDATA[一、自定义view的几种方式：

1.通过Android已有的控件实现自定义效果
2.通过继承View类实现自定义View
3.通过继承ViewGroup类实现相应效果

二、仿优酷菜单
通过系统控件组合使用，实现仿优酷菜单的效果,效果图：

基本实现思路：
系统基础控件布局+view旋转动画，实现起来也是很简单，布局文件如下，每一级的菜单用RelativeLayout来写是为了方便给菜单中添加按...]]></description><category></category></item><item><title><![CDATA[AsyncTask 的使用]]></title><link>https://blog.youkuaiyun.com/xj531/article/details/82692291</link><guid>https://blog.youkuaiyun.com/xj531/article/details/82692291</guid><author>xj531</author><pubDate>Thu, 13 Sep 2018 17:58:35 +0800</pubDate><description><![CDATA[AsyncTask 简介

AsyncTask 是一个轻量级的异步任务类，它内部封装了Thread和Handler可以用它在线程池中执行后台异步任务，然后把执行进度和最终结果传递给主线程并在主线程中更新UI。

AsyncTask 参数

AsyncTask 是一个抽象的泛型类，提供了Params、Progress、Result三个泛型参数 
Params：参数类型 
Progress： 任务进度...]]></description><category></category></item><item><title><![CDATA[Window的创建过程]]></title><link>https://blog.youkuaiyun.com/xj531/article/details/81781785</link><guid>https://blog.youkuaiyun.com/xj531/article/details/81781785</guid><author>xj531</author><pubDate>Fri, 17 Aug 2018 18:19:14 +0800</pubDate><description><![CDATA[1.activity的window创建

activity的window创建过程跟activity的启动过程息息相关，activity启动过程中最终会由ActivityThread中的performLaunchActivity()方法来完成整个启动，在该方法内部会通过类加载器加载创建activity的实例对象，并且通过attach方法为activity关联运行过程中所依赖的一些列上下文环境。


...]]></description><category></category></item><item><title><![CDATA[理解Window和WindowManager]]></title><link>https://blog.youkuaiyun.com/xj531/article/details/81672171</link><guid>https://blog.youkuaiyun.com/xj531/article/details/81672171</guid><author>xj531</author><pubDate>Tue, 14 Aug 2018 18:28:49 +0800</pubDate><description><![CDATA[window表示一个窗口的概念，如果我们需要在桌面显示一个类似悬浮窗的东西，就需要用到window来实现。window是一个抽象类，它的具体实现是phoneWidow。创建一个widow只需要通过WindowManager即可，WindowManager是外界访问window的入口，window的具体实现位于WindowManagerService中，WindowManager和WindowMan...]]></description><category></category></item><item><title><![CDATA[清晰的理解service]]></title><link>https://blog.youkuaiyun.com/xj531/article/details/80777339</link><guid>https://blog.youkuaiyun.com/xj531/article/details/80777339</guid><author>xj531</author><pubDate>Fri, 22 Jun 2018 18:31:15 +0800</pubDate><description><![CDATA[1、Service的start和bind状态有什么区别？


通过startservice启动的service拥有独立的生命周期；调用startservice方法会依次调用onCreate –&amp;gt; onStartCommand方法，多次调用startservice方法会重复调用onStartCommand方法，onCreate 方法只会调用一次；通过startservice启动的service...]]></description><category></category></item><item><title><![CDATA[简单的JNI调用]]></title><link>https://blog.youkuaiyun.com/xj531/article/details/80759244</link><guid>https://blog.youkuaiyun.com/xj531/article/details/80759244</guid><author>xj531</author><pubDate>Thu, 21 Jun 2018 13:44:58 +0800</pubDate><description><![CDATA[准备工作：NKD环境搭建


使用Android studio 打开Project structure，在设置页面找到SDK location，可以设置NDK的路径，如果目前还没有NDK开发包，studio会提示你下载，下载完成后设置路径即可 

检查local.properties文件里面有没有NDK路径：




开始创建JNI接口


新建一个类myJNI，然后添加JNI接口定义，如下所示，...]]></description><category></category></item><item><title><![CDATA[理解java中的synchronized关键字]]></title><link>https://blog.youkuaiyun.com/xj531/article/details/80734157</link><guid>https://blog.youkuaiyun.com/xj531/article/details/80734157</guid><author>xj531</author><pubDate>Tue, 19 Jun 2018 15:08:10 +0800</pubDate><description><![CDATA[目标：

理解synchronized含义、明确synchronized关键字修饰普通方法、静态方法、和代码块时锁对象的差异 
有如下一个类A



class A {
    public synchronized void a() {
    }

    public synchronized void b() {
    }
}

然后创建两个对象



A a1 = new A();
A...]]></description><category></category></item><item><title><![CDATA[第三章 view的事件体系 ----- view滑动/拖动]]></title><link>https://blog.youkuaiyun.com/xj531/article/details/80264987</link><guid>https://blog.youkuaiyun.com/xj531/article/details/80264987</guid><author>xj531</author><pubDate>Thu, 10 May 2018 11:22:16 +0800</pubDate><description><![CDATA[Android view的滑动先看下view完整代码如下：public class DemoView extends View {    private int lastX;
    private int lastY;
    private Scroller mScroller;
    public DemoView(Context context, AttributeSet attrs, i]]></description><category></category></item><item><title><![CDATA[（android学习）使用Gson解析json]]></title><link>https://blog.youkuaiyun.com/xj531/article/details/79044721</link><guid>https://blog.youkuaiyun.com/xj531/article/details/79044721</guid><author>xj531</author><pubDate>Fri, 12 Jan 2018 15:34:42 +0800</pubDate><description><![CDATA[使用Gson解析json格式的数据
一、添加依赖：
compile

'com.google.code.gson:gson:2.8.1'
二、Gson的简单使用
1.新建一个实体类（person）
public class Person {
private String 
name;
private int age;
private String 
sex;
privat]]></description><category></category></item><item><title><![CDATA[sublime text3侧边栏的修改]]></title><link>https://blog.youkuaiyun.com/xj531/article/details/78438089</link><guid>https://blog.youkuaiyun.com/xj531/article/details/78438089</guid><author>xj531</author><pubDate>Fri, 03 Nov 2017 18:01:42 +0800</pubDate><description><![CDATA[一、找到对应主题的配置文件：





二、首选项-设置-用户-打开下面文件，  其中font_size的值可以控制文本窗口字体的大小



三、修改这个文件
  ，文件路径见第一步
搜索SIDEBAR  可以找到关于侧边栏的数据，修改color可以改变颜色]]></description><category></category></item></channel></rss>