<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[u013470176的专栏]]></title><description><![CDATA[java基础及进击！]]></description><link>https://blog.youkuaiyun.com/u013470176</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u013470176]]></copyright><item><title><![CDATA[Android BottomSheetDialog横屏模式下布局显示不全/状态栏黑色]]></title><link>https://blog.youkuaiyun.com/u013470176/article/details/106453948</link><guid>https://blog.youkuaiyun.com/u013470176/article/details/106453948</guid><author>u013470176</author><pubDate>Sun, 31 May 2020 12:40:44 +0800</pubDate><description><![CDATA[引入
产品提了个常规需求，从底部弹框显示性别选择框，以前直接用原生AlertDialog或者自定义Dialog，这次想来个不一样的，查看开发文档发现BottomSheetDialog也可以实现，并且自带手势滑动和动画，于是开搞，实现效果如下。

效果可以。由于产品需要适配横屏，顺手试了下横屏，然后傻眼了，效果如下。

横屏状态下自定义的view没有显示全，需要手动上滑才能完全显示。习惯性点了下BottomSheetDialog源码，发现走onStart时BottomSheetBehavior把状态设置成ST]]></description><category></category></item><item><title><![CDATA[Android通过反射调用获取内置存储和外置sd卡根路径(全版本适配)]]></title><link>https://blog.youkuaiyun.com/u013470176/article/details/88803164</link><guid>https://blog.youkuaiyun.com/u013470176/article/details/88803164</guid><author>u013470176</author><pubDate>Mon, 25 Mar 2019 18:55:57 +0800</pubDate><description><![CDATA[model如下,功能一目了然:
public class FileInfo {
    // id value in DB
    public long id;
    // true if file is a directory
    public boolean isDir;
    // true if file is hidden
    public boolean isHidden...]]></description><category></category></item><item><title><![CDATA[AccessibilityService帮你实现Android全局悬浮窗]]></title><link>https://blog.youkuaiyun.com/u013470176/article/details/88356693</link><guid>https://blog.youkuaiyun.com/u013470176/article/details/88356693</guid><author>u013470176</author><pubDate>Fri, 08 Mar 2019 18:46:31 +0800</pubDate><description><![CDATA[引入
最近在做Android大屏,70寸全触摸,基于Android 5.0的AOSP开发(手动落伍=_=),屏蔽三大虚拟金刚键,所以需要在屏幕两边固定侧边栏代替虚拟键并实现开机自启.
之前并没有开发过这种小工具,自然没啥经验,第一反应当然是去应用市场下载类似App体验一把,使用3个三方后发现它们都需要用户手动打开系统中的「无障碍」功能来模拟用户虚拟按键的点击事件,通过该突破口google一把,发...]]></description><category></category></item><item><title><![CDATA[安卓8.0系统通知NotificationManager]]></title><link>https://blog.youkuaiyun.com/u013470176/article/details/84066791</link><guid>https://blog.youkuaiyun.com/u013470176/article/details/84066791</guid><author>u013470176</author><pubDate>Wed, 14 Nov 2018 15:14:46 +0800</pubDate><description><![CDATA[开始

从Android 8.0开始,使用系统通知Notification需要再设置下Channel,这就导致了版本兼容问题.为了解决这个,抽空写了个工具类,实现8.0系统上下都可实现正常通知功能.

原型

以今日头条为例,每次打开应用时,通知栏都会显示今天比较火的新闻,并且会显示一张隐藏的图片,具体效果如下2张:


通知合并时


通知展开时

实现

我觉得还是直接上代码比较好,没有使用m...]]></description><category></category></item><item><title><![CDATA[AOSP源码Gallery2和Launcher3导入Android Studio]]></title><link>https://blog.youkuaiyun.com/u013470176/article/details/83111423</link><guid>https://blog.youkuaiyun.com/u013470176/article/details/83111423</guid><author>u013470176</author><pubDate>Wed, 17 Oct 2018 16:17:36 +0800</pubDate><description><![CDATA[本文适用于有一定Android源码编译能力的开发者，对AOSP没有什么概念的同学可以参考涅槃1992发表的文章：自己动手编译Android源码（超详细），正如作者所说，超详细，也很简单．

引入

我之前一直从事App开发，换工作后公司正在研发一款类似百度小度的带屏智能硬件，所以需要定制Android系统．花了一个月熟悉Linux开发环境和Android8.1的源码结构后，我接下了相册Galler...]]></description><category></category></item><item><title><![CDATA[5分钟适配Android P和Android 8.0刘海屏，可能全网最全总结]]></title><link>https://blog.youkuaiyun.com/u013470176/article/details/82110196</link><guid>https://blog.youkuaiyun.com/u013470176/article/details/82110196</guid><author>u013470176</author><pubDate>Mon, 27 Aug 2018 14:34:38 +0800</pubDate><description><![CDATA[前言

刘海屏兴起的原因就不说了，只能说17年是最差劲的一届智能机了，说多了都是泪。既然局面已经这样了，咱们就来聊聊怎么解决刘海屏带来的屏幕适配问题。Android上的刘海屏出现在8.0系统上，小米、华为、vivo、oppo、一加、锤子等都有自家刘海屏手机，但Google是在Android P上才对其进行了适配，那对于开发者，8.0的刘海屏手机怎么适配呢？Android P呢？不急，下面我会通俗易...]]></description><category></category></item><item><title><![CDATA[Android Retrofit Http加密（无证书加密）]]></title><link>https://blog.youkuaiyun.com/u013470176/article/details/80620400</link><guid>https://blog.youkuaiyun.com/u013470176/article/details/80620400</guid><author>u013470176</author><pubDate>Fri, 08 Jun 2018 11:13:23 +0800</pubDate><description><![CDATA[前提：本文基于Retrofit + okhttp（下面代码可以直接复制使用！）一、Retrofit常规使用如下：OkHttpClient okHttpClient =new Builder()

.readTimeout(READ_TIME_OUT, TimeUnit.SECONDS)

.connectTimeout(CONNECT_TIME_OUT, TimeUnit.SECONDS)

.c...]]></description><category></category></item><item><title><![CDATA[Android WebSocket加密]]></title><link>https://blog.youkuaiyun.com/u013470176/article/details/80620295</link><guid>https://blog.youkuaiyun.com/u013470176/article/details/80620295</guid><author>u013470176</author><pubDate>Fri, 08 Jun 2018 11:10:01 +0800</pubDate><description><![CDATA[前提：本文基于Java-WebSocket-1.3.4.jar需求：公司App中有个WebSocket长链接需要加密，但现阶段不需要CA证书，实现一下。Java-WebSocket.jar怎么使用，相信不用我多说了，不会的可以百度下，不难，下面主要讲下怎么无证书加密。下面是一个加密工具类SSLSocketFactoryUtil:第一张第二张引入的包使用方法：用WebSocketClient的对象调...]]></description><category></category></item><item><title><![CDATA[Android AsyncTask介绍和一个简单的小例子]]></title><link>https://blog.youkuaiyun.com/u013470176/article/details/78620256</link><guid>https://blog.youkuaiyun.com/u013470176/article/details/78620256</guid><author>u013470176</author><pubDate>Thu, 23 Nov 2017 23:29:44 +0800</pubDate><description><![CDATA[一、AsyncTask的优点：
1、简单,快捷
2、过程可控


二、AsyncTask的缺点：
1、在使用多个异步操作和并需要进行Ui变更时,就变得复杂起来


三、Handler的优点：
1、结构清晰，功能定义明确
2、对于多个后台任务时，简单，清晰


四、Handler的缺点：
在单个后台异步处理时，显得代码过多，结构过于复杂（相对性）


五、介绍：]]></description><category></category></item><item><title><![CDATA[Android7.0 popupwindow位置错误解决办法]]></title><link>https://blog.youkuaiyun.com/u013470176/article/details/73742223</link><guid>https://blog.youkuaiyun.com/u013470176/article/details/73742223</guid><author>u013470176</author><pubDate>Mon, 26 Jun 2017 17:40:20 +0800</pubDate><description><![CDATA[作为一名开发，同时也是一名搞机人士，某天看到自家产品在Android7.0系统上面的popupwindow位置出毛病了，如下图：


然后看网上说是系统级bug，那就自定义一个popupwindow所有版本通用，如下：
import android.graphics.Rect;
import android.os.Build;
import android.view.View;
im]]></description><category></category></item><item><title><![CDATA[Android ListView使用convertView解决内存溢出问题（推介使用recyclerview，listview已过时）]]></title><link>https://blog.youkuaiyun.com/u013470176/article/details/50379443</link><guid>https://blog.youkuaiyun.com/u013470176/article/details/50379443</guid><author>u013470176</author><pubDate>Tue, 22 Dec 2015 14:27:19 +0800</pubDate><description><![CDATA[比方说在加载各种图片的时候，listview不及时回收的话，可能会造成内存溢出，这个时候就是看getview方法的时候了。

public View getView(int position, View convertView, ViewGroup parent) {
      
      ViewHolder holder = null;
      if(convertView]]></description><category></category></item><item><title><![CDATA[Android ListView的回弹效果]]></title><link>https://blog.youkuaiyun.com/u013470176/article/details/50371771</link><guid>https://blog.youkuaiyun.com/u013470176/article/details/50371771</guid><author>u013470176</author><pubDate>Mon, 21 Dec 2015 14:22:11 +0800</pubDate><description><![CDATA[使用动态布局实现该方法，重写ListView中的scroll方法可以实现该ListView的回弹效果：

1、重写ListView中的方法：
package com.isoftstone.pop;
import android.annotation.SuppressLint;
import android.content.Context;
import android.util.Att]]></description><category></category></item><item><title><![CDATA[Android ListView缓存对象]]></title><link>https://blog.youkuaiyun.com/u013470176/article/details/50371715</link><guid>https://blog.youkuaiyun.com/u013470176/article/details/50371715</guid><author>u013470176</author><pubDate>Mon, 21 Dec 2015 14:18:29 +0800</pubDate><description><![CDATA[一、ListView列表控件每次滑动都会创建一个对象，那么为了复用缓存，可以使用ConverView参数，这样如果不想看到的item就会被回收，节省内存。

二、convertView参数的功能怎么实现？
convertView缓存对象，当滑动屏幕的时，子条目被隐藏，会被convertView给接受。

三、convertView示例代码如下（主要看getView方法即可）：

im]]></description><category></category></item><item><title><![CDATA[Android ListView分页显示简单模拟实现]]></title><link>https://blog.youkuaiyun.com/u013470176/article/details/50371521</link><guid>https://blog.youkuaiyun.com/u013470176/article/details/50371521</guid><author>u013470176</author><pubDate>Mon, 21 Dec 2015 13:45:39 +0800</pubDate><description><![CDATA[下面是一段listview分页显示的实力代码，很简单模拟出来分批加载数据的listview内容。


package com.notice.moredate;


import java.util.ArrayList;
import java.util.HashMap;


import android.app.Activity;
import android.os.Bund]]></description><category></category></item><item><title><![CDATA[Android ListView动画（逐行显示动画效果）]]></title><link>https://blog.youkuaiyun.com/u013470176/article/details/50371057</link><guid>https://blog.youkuaiyun.com/u013470176/article/details/50371057</guid><author>u013470176</author><pubDate>Mon, 21 Dec 2015 11:57:39 +0800</pubDate><description><![CDATA[1、
如果想在ListView中item条目出现时显示动画效果，那么可以使用系统的，或者是自定义的都可以，下面就是一个使用自定义动画的ListView动画演示：


        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height=]]></description><category></category></item><item><title><![CDATA[Android ListView的性能优化（ViewHolder和HashMap）]]></title><link>https://blog.youkuaiyun.com/u013470176/article/details/50370973</link><guid>https://blog.youkuaiyun.com/u013470176/article/details/50370973</guid><author>u013470176</author><pubDate>Mon, 21 Dec 2015 11:50:14 +0800</pubDate><description><![CDATA[一、对于ListView的优化，一般步骤如下：
1、复用convertView：
首先讲下ListView的原理：ListView中的每一个Item显示都需要Adapter调用一次getView的方法，这个方法会传入一个convertView的参数，返回的View就是这个Item显示的View。如果当Item的数量足够大，再为每一个Item都创建一个View对象，必将占用很多内存，创建View]]></description><category></category></item><item><title><![CDATA[ListView的点击事件、长按事件监听]]></title><link>https://blog.youkuaiyun.com/u013470176/article/details/50370916</link><guid>https://blog.youkuaiyun.com/u013470176/article/details/50370916</guid><author>u013470176</author><pubDate>Mon, 21 Dec 2015 11:38:01 +0800</pubDate><description><![CDATA[一、点击事件 

list.setOnItemClickListener(new OnItemClickListener() { 



@Override
public void onItemClick(AdapterView arg0, View arg1, int position, long id) { 

//do something? 

} 

}); 
]]></description><category></category></item><item><title><![CDATA[ListView+BaseAdapter的使用方法]]></title><link>https://blog.youkuaiyun.com/u013470176/article/details/50370862</link><guid>https://blog.youkuaiyun.com/u013470176/article/details/50370862</guid><author>u013470176</author><pubDate>Mon, 21 Dec 2015 11:32:38 +0800</pubDate><description><![CDATA[一、概念：
listview就是一种逐行显示内容的控件，listview是遵循MVC设计模式的，

二、经验：
比方说textview空间中有显示内容的属性setText，那么listview控件想要显示自己的内容，也会相应的有显示内容的属性，这个属性就是“适配器”adapter，使用lv.setAdapter(adapter)设置显示内容，adapter是一个接口，实现该接口的需要复写的]]></description><category></category></item><item><title><![CDATA[ListActivity的使用方法]]></title><link>https://blog.youkuaiyun.com/u013470176/article/details/50370203</link><guid>https://blog.youkuaiyun.com/u013470176/article/details/50370203</guid><author>u013470176</author><pubDate>Mon, 21 Dec 2015 10:10:36 +0800</pubDate><description><![CDATA[一般的activity都会在java文件中引入相对应的xml布局文件。

但是在“比方说系统设置界面，黑色的那种类似于listview的界面”，可以使用ListActivity这个类来实现，当然因为相对应的显示界面一般只有textview文字内容，所以需要定义一个关于textview的item的xml文件布局。然后将设置相应的adapter，将实现定义的String[]数组内容放进去，下面将会]]></description><category></category></item><item><title><![CDATA[Android JSON解析（JSONObject和JSONArray）]]></title><link>https://blog.youkuaiyun.com/u013470176/article/details/50353169</link><guid>https://blog.youkuaiyun.com/u013470176/article/details/50353169</guid><author>u013470176</author><pubDate>Fri, 18 Dec 2015 17:51:01 +0800</pubDate><description><![CDATA[package com.example.tt;


import java.util.HashMap;
import java.util.Map;


import org.json.JSONException;
import org.json.JSONObject;


import android.app.Activity;
import android.os.Bund]]></description><category></category></item></channel></rss>