java中的观察者/订阅者模式实践 – Observable、Observer

这方面的资料搜索一下很多,但是自己一直没有实践过。今天用到了,做下记录。名词解释:

观察者,Observer
被观察者,Observable

举例,过年放烟花,烟花放在中间一直燃烧,就是被观察者;
而大家在周围看,就是观察者(哇~~~猴赛雷)
直接上代码:

测试一下:

输出:

I am fired, check on that
XiaoLi watched: qiu…qiu…qiu…
XiaoHong watched: qiu…qiu…qiu…
XiaoQiang watched: qiu…qiu…qiu…
XiaoMing watched: qiu…qiu…qiu…

之前使用的是直接new一个Observable对象,导致无法调用父类的setChanged方法。 Continue reading

热河 李志

李志《1701》专辑封面

 

热河路就像 八十年代的金坛县
梧桐垃圾灰尘
和各式各样的杂货店
人们总是早早的离开
拉上卷帘门
在天黑前穿上毛衣
点一根烟
热河路有一家
开了好多年的理发店
不管剪什么样的发型
你只要付五块钱
老板和她的妹妹坐在椅子上
对着镜子一言不发
他们的老家在身后
在岸边在安徽全椒县
没有人在热河路谈恋爱
总有人在天亮时伤感
如果年轻时你没来过热河路
那你现在的生活是不是很幸福
纪念碑旁有一家破旧的电影院
往北走五百米就是南京火车西站
每天都有外地人
在直线和曲线之间迷路
气喘嘘嘘眼泪模糊
奔跑跌倒奔跑
秋林龙虾换了新的地方
32路还是穿过挹江门
高架桥拆了修了新的隧道
走来走去走不出我的盐仓桥
来到城市已经八百九十六天
热河路一直是相同的容颜
偶尔有干净的潘西路过
她不会说你好再见
没有人在热河路谈恋爱
总有人在天黑时伤感
如果年轻时你来过热河路
那你现在是不是已经被他们淹没
没有新的衣服能让你爱恋
总有一种天气让我怀念
醒来或者吃饱又是一年
相遇然后分别就在一天
热河
词曲:李志
演唱:李志

Android控件之带清空按钮(功能)的AutoCompleteTextView自动提示

功能折腾完了记录一下。带删除按钮的AutoCompleteTextView,普通的自动提示控件用起来比较简单,准备好数组给控件setAdapter一下行了,这里要说的是提取sqlite中的数据绑定并且加上清空按钮,先来张图片。

带删除按钮的AutoCompleteTextView

最初没有用过AutoCompleteTextView的时候,就直接百度了下,想必都会得到这样一段代码:

上面的代码简单,但是不大实用,比如我的需求就是,要有清空按钮。然后继续百度,又找到了这篇文章(继承AutoCompleteTextView自定义控件ClearableAutoCompleteTextView,自定义adapter方式实现)

然后就闭着眼抄了一下,修改一点,满足了需求。其实碰上问题就百度这种方式是很不对的,所有的控件使用方法在Android Develop Docs中都有介绍:/sdk/docs/reference/android/widget/AutoCompleteTextView.html。哎,我们都是应用程序猿,但我们又连API都不看。。。或许你觉得密密麻麻的英文看着头疼?或许你又翻不了墙?或许吧,还是那句老话,成功的人找方法,而失败的人嘛,对吧。

今天想给AutoCompleteTextView加个图标,就是上图左侧那个放大镜按钮,于是找好素材,设置drawableLeft,运行,发现没有效果。于是查看自定义控件的源码(就是上面使用自定义adapter的那个链接里提到的),发现是在init方法中绑定了setOnTouchListener, 然后onTouchListener中又通过MotionEvent判断触摸的区域,而触摸的对象使用的是setCompoundDrawablesWithIntrinsicBounds,这不就是drawableLeft、drawableRight所对应的方法嘛,果断删除自定义控件ClearableAutoCompleteTextView,使用原生AutoCompleteTextView,加入drawableLeft放大镜按钮,drawableRight使用删除小图标,然后对控件setOnTouchListener,代码如下:

一下子就腰不疼腿不酸了。注意“触摸点位置判断”那行,意思是当前触摸点如果大于AutoCompleteTextView的宽度减去paddingRight的值再剪掉一个固定值(R.dimen.space_4_touch,我这里是10dip),就算触摸到了删除小图标;固定值是多少根据情况来,值越大可以触摸的空间越大,相反越小,用户可能就点击不到那块区域(删除小图标的区域)从而激发不了事件,这也算是优化用户体验的一种手段吧。

所以,按照上述代码,也可以举一反三为放大镜按钮加上事件,或者为删除小图标设置隐藏/显示条件,比如文本框没有内容时删除图标隐藏,有内容则显示等。

Continue reading

一个短片から腰

旋轉 跳躍喔
他感到每條路都在頭痛
新鮮的帕特里克满脑子
都是開拓的自慰器
那些男人愛的男人愛市政
市政愛市民 市民愛流連

旋轉 跳躍喔
他感到飛鳥們也在頭痛
冒牌的帕特里克满脑子
都是穩妥的獨角戲
那些男孩愛的男人愛機器
機器愛法律 法律是你

深夜裏辛蒂蕾拉们倒下的地方 促成整片血紅的高樓
在搞与不搞之間泛起淡淡的哀伤 他的來頭已經腐朽
別擔心沒有哪一首歌能夠 把这个現實唱到地狱去
當你還能享有這種靜默我的老爺 這爛攤就不會收場

旋轉 跳躍吧
他感到連晚風也在頭痛
狗娘養的帕特里克满脑子
關於體態的滑翔機
他說過那些女人愛的男人愛蘿莉
蘿莉愛包包 包包愛货币

他在高级堡垒的方陣里走出 带来大會的消息
在幼犬和地皮商的征程里 他是發達的肯定句
等他和他們 他們和所有人之間都搞不來信任的時候
只有冬和她的姨媽从沒有熄灯的窗口 無聲眺望

這夜派對 就要散場

幽暗的最高頻道還在
為全城遮盖下一百年的昂貴谜底
他倚靠在令人害羞的禮品堆裡
冉冉睡去