一开始想过用子线程来实现,还好搜索了一下,发现 Android 自带了一个倒计时类,正好适合,这个类就是CountDownTimer,创建它需要提供两个参数,一个是总计时时间(单位是毫秒),一个是步长,也就是一次走多少毫秒.然后还需要实现它的两个接口.

  1. void onTick(long millisUntilFinished)
    当时间每走一次就会调用这个方法,参数是还剩下多少时间没走,在这里禁用按钮,然后显示还剩多少时间
  2. void onFinish()
    这个一看就知道是倒计时完成了,会回调它,可以在这里启用按钮

上示例代码

//倒计时60秒,这里不直接写60000,而用1000*60是因为后者看起来更直观,每走一步是1000毫秒也就是1秒
CountDownTimer timer = new CountDownTimer(1000 * 60, 1000) {
    @SuppressLint("DefaultLocale")
    @Override
    public void onTick(long millisUntilFinished) {
        button.setEnabled(false);
        button.setText(String.format("已发送(%d)",millisUntilFinished/1000));
    }

    @Override
    public void onFinish() {
        button.setEnabled(true);
        button.setText("重新获取");
    }
};
timer.start();

最后一定要记得 start()

在渲染订单列表的时候,用到了三层recyclerView嵌套,结果进入订单列表页,当最里层的数据一个屏幕装不下的时候,就会把外层的view挤出去.比如店铺名.后来查各种资料发现是焦点问题:
当新出现一个recyclerView的时候,这个recyclerView就会获得焦点,它的第一条数据就会出现在屏幕顶部,解决方案是:

<LinearLayout
   android:orientation="vertical"
   android:layout_width="match_parent"
   android:layout_height="wrap_content">

   <View
       android:focusable="true"
       android:focusableInTouchMode="true"
       android:layout_width="match_parent"
       android:layout_height="4dp"/>

   <android.support.v7.widget.RecyclerView
       android:id="@+id/rv_goods_cart"
       android:layout_width="match_parent"
       android:layout_height="match_parent" />
</LinearLayout>

在最外层的RecyclerView前面新建一个View,然后给他焦点,这样的话,进入订单页初次渲染的时候,最外层的recyclerView就不会被挤出去了.

之前用过 APP 写日记,也用过 OneNote 写日记,APP 有数据丢失的风险,OneNote 的书写和查看体验太差了...而且数据不在自己手里始终不安心,那天要是想转移到其他地方也麻烦.

遂想着这个 Typecho 用来写日记貌似不错,颜值高,可定制性高,数据库随时可以备份,转移.甚至可以自己开发个APP,然后把数据挪过去...

但是写的日记有可能被别人看到之类的,如果把日记设置成私密的话,又太麻烦了,控制台的概览也统计不了私密文章,不如让别人都进不来把,于是找资料开发了这个简单的插件,只有登陆的用户才能访问网站.没登陆的状态下访问网站会自动跳转到登陆页面.当然,注册功能我是关闭了的

不知道有没有人会需要,总之先分享好了.

点击下载插件(百度云)

写了一个脚本爬取了阳光电影的豆瓣高分电影,需要用迅雷帮我一部一部的自动下载好,供我无聊时观看.为什么要一部一部的下?
因为中国移动送了我一张无限流量卡,结果才用了5个G我就被限速到 100kb/s 了,不能忍 不能浪费.遂生出用来给电脑开热点下电影的想法.100kb的网速也只能一部一部下了.完事开头难,我需要知道是否能用命令行控制迅雷下载电影,百度了下,OK,没问题
然后思考了一下,画了个流程图
下载流程图

我大概需要实现3个功能

  1. 使用命令行控制迅雷下载指定链接
  2. 检测任务是否开始
  3. 检测当前任务是否完成,用于确定是否开始下载下一部



阅读全文 »