<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Zackratos的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Zackratos</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Zackratos]]></copyright><item><title><![CDATA[Fragment 中使用 SwipeRefreshLayout 导致的不能退出问题]]></title><link>https://blog.youkuaiyun.com/Zackratos/article/details/74279255</link><guid>https://blog.youkuaiyun.com/Zackratos/article/details/74279255</guid><author>Zackratos</author><pubDate>Tue, 04 Jul 2017 01:10:35 +0800</pubDate><description><![CDATA[之前做项目的时候，发现在 Fragment 中使用 SwipeRefreshLayout 会有一个问题，就是当 SwipeRefreshLayout 正在刷新的时候如果切换 Fragment ，会导致当前 Fragment 的界面保留在 Activity 中的相应位置上，切换到其他的 Fragment 会和之前的 Fragment 重合，并且 SwipeRefreshLayout 会一直处于刷新状]]></description><category></category></item><item><title><![CDATA[自定义 DialogFragment 实现底部弹出 dialog]]></title><link>https://blog.youkuaiyun.com/Zackratos/article/details/73178202</link><guid>https://blog.youkuaiyun.com/Zackratos/article/details/73178202</guid><author>Zackratos</author><pubDate>Tue, 13 Jun 2017 15:44:16 +0800</pubDate><description><![CDATA[前端时间公司做的项目要求和 iOS 版本的 UI 风格保持高度的一致，虽然我个人及其排斥这种仿 iOS 的 UI，然而人在屋檐下，不得不出卖自己的节操。其中就有一个底部弹出 dialog 的效果，宽度还是全屏的，就项这个样子（其实这张图就是我最终实现的效果）：






于是乎百度 google 了一番，居然没有找到用 DialogFragment 实现的类似的效果，网上大多实现类]]></description><category></category></item><item><title><![CDATA[用单例封装 SharedPreferences]]></title><link>https://blog.youkuaiyun.com/Zackratos/article/details/72695799</link><guid>https://blog.youkuaiyun.com/Zackratos/article/details/72695799</guid><author>Zackratos</author><pubDate>Wed, 24 May 2017 19:01:48 +0800</pubDate><description><![CDATA[自己封装的 SharedPreferences，很简单的封装，直接上代码






public class SPManager {



    private static final String ACCOUNT = "account";
    private static final String PASSWORD = "password";
    private st]]></description><category></category></item><item><title><![CDATA[DrawerLayout 在 Android 4.4 和 Android 5.0 以上实现沉浸状态栏和导航栏的方法]]></title><link>https://blog.youkuaiyun.com/Zackratos/article/details/62236092</link><guid>https://blog.youkuaiyun.com/Zackratos/article/details/62236092</guid><author>Zackratos</author><pubDate>Wed, 15 Mar 2017 21:03:38 +0800</pubDate><description><![CDATA[DrawerLayout 在实现沉浸状态栏的方法相对复杂，尤其在 Android 4.4 和 Android 5.0 以上的实现方法区别很大，本人在通过一段时间的研究，总结出比较完美的实现方法，现在这里分享。


首先需要针对 Android 5.0 以上和一下设置不同的 style，如图所示：




style的内容分别是：


value：]]></description><category></category></item><item><title><![CDATA[自定义 AlertDialog 主题的方法]]></title><link>https://blog.youkuaiyun.com/Zackratos/article/details/56014495</link><guid>https://blog.youkuaiyun.com/Zackratos/article/details/56014495</guid><author>Zackratos</author><pubDate>Mon, 20 Feb 2017 15:48:18 +0800</pubDate><description><![CDATA[由于 AlertDialog 不需要在 Manifests 中注册，所以无法再 Manifests 文件中定义起主题，那么该如何自定义 AlertDialog 的主题呢，事实上可以在创建 AlertDialog 的时候指定它的主题：


AlertDialog dialog = new AlertDialog.Builder(new ContextThemeWrapper(context, ]]></description><category></category></item><item><title><![CDATA[修改 AlertDialog 中按钮颜色的方法]]></title><link>https://blog.youkuaiyun.com/Zackratos/article/details/55517933</link><guid>https://blog.youkuaiyun.com/Zackratos/article/details/55517933</guid><author>Zackratos</author><pubDate>Fri, 17 Feb 2017 17:29:08 +0800</pubDate><description><![CDATA[AlertDialog dialog = builder.create();
dialog.getButton(dialog.BUTTON_POSITIVE).setTextColor(Color.BLACK);
dialog.getButton(dialog.BUTTON_NEGATIVE).setTextColor(Color.BLACK);
dialog.setCanceledOnTouch]]></description><category></category></item><item><title><![CDATA[自定义 LinearLayout 实现类似 CoordinatorLayout 的效果]]></title><link>https://blog.youkuaiyun.com/Zackratos/article/details/53695578</link><guid>https://blog.youkuaiyun.com/Zackratos/article/details/53695578</guid><author>Zackratos</author><pubDate>Fri, 16 Dec 2016 17:51:32 +0800</pubDate><description><![CDATA[前段时间公司要求实现类似小米的时钟的闹钟列表可以上滑下滑的效果，我当时的第一反应就是使用 CoordinatorLayout ，但后来使用发现一些问题，CoordinatorLayout 收缩的时候必须是一个 ToolBar ，而小米的时钟收缩上去是一个数字时钟，无奈之下只好自己重写。


经过大量的 google 百度，我了解到 NestedScrollingParent 和 Nested]]></description><category></category></item><item><title><![CDATA[自定义 View 实现秒表功能]]></title><link>https://blog.youkuaiyun.com/Zackratos/article/details/53694846</link><guid>https://blog.youkuaiyun.com/Zackratos/article/details/53694846</guid><author>Zackratos</author><pubDate>Fri, 16 Dec 2016 16:58:22 +0800</pubDate><description><![CDATA[一般计时类的自定义 View 都要考虑一个问题，那就是绘制是需要时间的，虽然很短，但是随着时间的推移，误差就会越来越大，我之前写过自定义 View 实现钟表功能的博客，当时是通过每秒钟获取一次系统时间，然后根据系统时间重新绘制来保证不会产生误差的，如果要实现秒表功能，这个方法明显不行，应为秒表是自己计时的，和系统时间没有关系，为了防止产生误差，我们可以每秒钟都执行一次动画，一秒钟过完之后，无论动画]]></description><category></category></item><item><title><![CDATA[自定义 View 实现钟表效果]]></title><link>https://blog.youkuaiyun.com/Zackratos/article/details/53437402</link><guid>https://blog.youkuaiyun.com/Zackratos/article/details/53437402</guid><author>Zackratos</author><pubDate>Fri, 02 Dec 2016 18:11:37 +0800</pubDate><description><![CDATA[简单的自定义 view 实例]]></description><category></category></item><item><title><![CDATA[MediaPlayer 播放铃声的方法汇总]]></title><link>https://blog.youkuaiyun.com/Zackratos/article/details/53379157</link><guid>https://blog.youkuaiyun.com/Zackratos/article/details/53379157</guid><author>Zackratos</author><pubDate>Mon, 28 Nov 2016 16:40:54 +0800</pubDate><description><![CDATA[MeidaPlayer 的基本使用方法]]></description><category></category></item><item><title><![CDATA[Android 开启闪光灯比较完美的兼容方案]]></title><link>https://blog.youkuaiyun.com/Zackratos/article/details/53378101</link><guid>https://blog.youkuaiyun.com/Zackratos/article/details/53378101</guid><author>Zackratos</author><pubDate>Mon, 28 Nov 2016 15:27:17 +0800</pubDate><description><![CDATA[Android 系统中，开启闪光灯，经常会遇到不同的手机出现不兼容的问题，下面的开启闪光灯方案相对来说兼容性比较高：]]></description><category></category></item><item><title><![CDATA[Activity 冷启动预加载显示背景的方法]]></title><link>https://blog.youkuaiyun.com/Zackratos/article/details/53308347</link><guid>https://blog.youkuaiyun.com/Zackratos/article/details/53308347</guid><author>Zackratos</author><pubDate>Wed, 23 Nov 2016 17:43:11 +0800</pubDate><description><![CDATA[给 Activity 的主题添加一个 android:windowBackground 属性即可

    @drawable/loading



<activity
    android:name=".ui.MainActivity"
    android:launchMode="singleTask"
    android:screenOrientation="portrait]]></description><category></category></item><item><title><![CDATA[解决ScrollView与RecyclerView/ListView滑动冲突的两种方法]]></title><link>https://blog.youkuaiyun.com/Zackratos/article/details/53261790</link><guid>https://blog.youkuaiyun.com/Zackratos/article/details/53261790</guid><author>Zackratos</author><pubDate>Mon, 21 Nov 2016 17:48:10 +0800</pubDate><description><![CDATA[方法一：把RecyclerView / ListView 写在单独的一个 layout 文件中，然后通过 LayoutInflater.from().inflate() 方法添加到父布局中
RecyclerView view = LayoutInflater.from(context).inflater(R.layout.recycler_view, father_layout);


]]></description><category></category></item><item><title><![CDATA[AlarmManager的正确使用姿势]]></title><link>https://blog.youkuaiyun.com/Zackratos/article/details/53243595</link><guid>https://blog.youkuaiyun.com/Zackratos/article/details/53243595</guid><author>Zackratos</author><pubDate>Sun, 20 Nov 2016 19:39:03 +0800</pubDate><description><![CDATA[AlarmManager 这个类在 Android 开发中非常实用，它是系统及服务，可以进行定时操作而不依赖于 Acitivity 或 Service，但是 Android 在不同的 API 级别中有一定的差异性，往往给开发带来一定的困难，这里将举例说明 AlarmManager 在不同 API 级别中的基本使用方法。


在 Android 4.4 之前，一般都是使用 alarmManag]]></description><category></category></item><item><title><![CDATA[如何获取Android系统时间是24小时制还是12小时制]]></title><link>https://blog.youkuaiyun.com/Zackratos/article/details/53088970</link><guid>https://blog.youkuaiyun.com/Zackratos/article/details/53088970</guid><author>Zackratos</author><pubDate>Tue, 08 Nov 2016 21:54:42 +0800</pubDate><description><![CDATA[ContentResolver cv = this.getContentResolver();
String strTimeFormat = android.provider.Settings.System.getString(cv,
		android.provider.Settings.System.TIME_12_24);]]></description><category></category></item><item><title><![CDATA[让DialogFragment全屏的方法]]></title><link>https://blog.youkuaiyun.com/Zackratos/article/details/53010755</link><guid>https://blog.youkuaiyun.com/Zackratos/article/details/53010755</guid><author>Zackratos</author><pubDate>Wed, 02 Nov 2016 19:07:12 +0800</pubDate><description><![CDATA[重写DialogFragment 的onStart()方法：
    @Override
    public void onStart() {
        super.onStart();
        getDialog().getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.Layo]]></description><category></category></item><item><title><![CDATA[使用Fragment代替Activity]]></title><link>https://blog.youkuaiyun.com/Zackratos/article/details/52951553</link><guid>https://blog.youkuaiyun.com/Zackratos/article/details/52951553</guid><author>Zackratos</author><pubDate>Fri, 28 Oct 2016 00:05:42 +0800</pubDate><description><![CDATA[activity_fragment:

<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/fragment_container"
    android:layout_width="match_parent"
    android:layout_hei]]></description><category></category></item><item><title><![CDATA[论单例模式在Andriod开发中的实用性]]></title><link>https://blog.youkuaiyun.com/Zackratos/article/details/52820063</link><guid>https://blog.youkuaiyun.com/Zackratos/article/details/52820063</guid><author>Zackratos</author><pubDate>Fri, 14 Oct 2016 23:55:17 +0800</pubDate><description><![CDATA[Android开发中何时该使用单例模式呢]]></description><category></category></item><item><title><![CDATA[通过Intent传递对象的另类方法]]></title><link>https://blog.youkuaiyun.com/Zackratos/article/details/52819964</link><guid>https://blog.youkuaiyun.com/Zackratos/article/details/52819964</guid><author>Zackratos</author><pubDate>Fri, 14 Oct 2016 23:35:30 +0800</pubDate><description><![CDATA[我们都知道，通过Intent在Activity之间传递对象一般有两种方法，Serializable和Parcelable，那有没有其他的方法呢？事实上本人发现一个非常简单的方法，分享出来，请大家不吝赐教。]]></description><category></category></item><item><title><![CDATA[Bitmap和Drawable互相转换的方法]]></title><link>https://blog.youkuaiyun.com/Zackratos/article/details/52817973</link><guid>https://blog.youkuaiyun.com/Zackratos/article/details/52817973</guid><author>Zackratos</author><pubDate>Fri, 14 Oct 2016 18:05:52 +0800</pubDate><description><![CDATA[public class ImageUtils {
    public static Bitmap drawable2Bitmap(Drawable drawable) {
        return ((BitmapDrawable) drawable).getBitmap();
    }

    public static Drawable bitmap2Drawable(Contex]]></description><category></category></item></channel></rss>