昨天开发,遇到一个棘手的问题,就是需要多个ScroollView能达到联动的效果,不是把view放到一个ScrollView就能解决的,需要将view拆分到不同的ScrooView中,然后对某个ScrollView操作,实现两个或者多个ScrollView同时滚动,给人的感觉是在一个ScrollView上的效果一样的!!
例如图上效果:
第一排是能自由左右移动的ScrollView,第二行是自由移动的ScrollView,但是呢 需求是移动第二个ScrollView需要我们同时第一个ScrollView同步移动!怎么做呢,上代码:
第一:写个接口ScrollViewListener!!
public interface ScrollViewListener { void onScrollChanged(MyScrollView scrollView, int x, int y, int oldx, int oldy); }第二:
重写 HorizontalScrollview(或者ScrollView)
public class MyScrollView extends HorizontalScrollViewrollView { private ScrollViewListener scrollViewListener = null; public MyScrollView(Context context) { super(context); } public MyScrollView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public MyScrollView(Context context, AttributeSet attrs) { super(context, attrs); } public void setScrollViewListener(ScrollViewListener scrollViewListener) { this.scrollViewListener = scrollViewListener; } protected void onScrollChanged(int x, int y, int oldx, int oldy) { super.onScrollChanged(x, y, oldx, oldy); if (scrollViewListener != null) { scrollViewListener.onScrollChanged(this, x, y, oldx, oldy); } } }
第三步:
某个Activity 实现接口,并实现onScrollChanged方法,
public class TestActivity implements ScrollViewListener
实例化你的Scrollview , 然后 注册监听器:
myscrollview = (MyScrollView) findViewById(R.id.scrollview_score_vertical);
myscrollview.setScrollViewListener(this);
接口方法实现:
public void onScrollChanged(MyScrollView scrollView, int x, int y,
int oldx, int oldy) {
if (scrollView == myscrollview ) {
myscrollview .scrollTo(x, y); // 这里是拖动myscrollview 实现scrollview滚动
你的scrollview(或者listivew).scrollTo(x, y);// 这里写 需要跟myscrollview同步滚动的scrollview或者listview即可!
}
}
尽管iPhone仍然是我们这颗星球上最受欢迎的智能手机之一,但不可否认的是,三星仍然在不断出击、蚕食着苹果公司的市场份额。当然,苹果的iPhone销量仍在不断增长,只不过增长速度已经远不及当初将苹果迅速推向全球市值第一的那股洪流。
更重要也更令某些人无法接受的是,三星公司正以某种方式取代苹果的地位、一步步成为高科技世界中的新宠儿。对任何一份主流报纸或技术刊物的标题进行浏览,我们至少会发现其中之一认为苹果注定要失败而三星必然能成功。就在最近,分析师Gene Munster更是大胆地宣称,三星的创新速度要高于苹果公司。
在刚刚过去的这个周三,苹果公司市场营销部门高级副总裁Phil Schiller为即将到来的采访针对竞争对手Android精心准备了几个词汇。值得一提的是,就在Schiller给出评论的一天之后,三星正式揭开其下一代旗舰机型——Galaxy S4的面纱。
三星搞这种速度与激情的碰撞绝不仅仅是为了追赶苹果的脚步,更有野心一举将对手拿下。在庞大到疯狂的营销预算、更积极的产品方案发布周期以及更多元化的手机产品线设定的支持之下,三星已经开始与苹果正面交锋,且丝毫不畏惧这家来自蒂比蒂诺的业界领袖。
也就是说,Schiller似乎通过苹果内部数据排除了Android对用户的一部分吸引力。首先,Schiller指出在2012年的年假财季,由Android阵营脱离转投iPhone怀抱的用户数量为由iPhone转向Android的四倍。
Schiller当然也没忘记对Android的碎片化趋势发起进攻。他指出多数Android用户仍然在继续使用已经过时的Android操作系统版本,并声称Android平台的碎片化状况“就是这么普遍。”
而且这也能与我们本周得到的消息加以印证:三星Galaxy S4据说将仍然采用将近一年的的操作系统版本,他表示。“用户将不得不进行新一轮升级补丁的等待周期。”
这里有两件事情值得注意。
首先,三星Galaxy S4配备了最新版本的Android系统,所以这方面说法并不成立。
其次,虽然碎片化确实令人烦躁,但目前的评论显然过度夸大了这一事实。
没错,Android设备由于存在多种机型而呈现碎片化趋势。开发人员必须为不同的屏幕尺寸等具体参数做出调整甚至妥协,然而在以旗舰级Android手机为代表的特定设备方面,碎片化所引发的问题已经越来越小甚至可以忽略。尽管在各类手机之间存在着数以百计的Android系统差异,但开发人员只需要关注其中有限的几类就足以迎合大多数Android用户群的需求。
Schiller补充称,“Android常常作为功能手机的免费替代方案出现,而且在使用体验上不像iPhone那样优秀。”
虽然说得有道理,但这部分用户并不是开发人员的关注重点。
因此,虽然Schiller与苹果爱好者们可以争辩称Android的销售成绩有很大一部分来自向要求较低的用户赠送免费设备,但Android爱好者同样也能以此证明碎片化趋势被过分夸大。简单地说,如果开发人员真的不再关心代码成品在不同Android手机上的执行效果,那么还有谁会在乎碎片化这东西?可以肯定的是,iOS上的应用程序通常比Android版本更精致更顺畅,但这种差距正在以缓慢而稳定的节奏逐步缩小。
这位高管表示,Android设备面对的问题与采用来自多家公司的不同组件有关,而苹果则一手包揽了包括手机硬件及iOS操作系统在内的所有开发工作。
“当用户在打开包装、拿出Android设备时,首先就需要登录九个来自不同供应商的账户,否则根本无法达到与iOS相仿的使用体验,”他表示。“而这些环境彼此之间不能无缝对接。”
要登录九个账户才能获得相同的使用体验?这听起来似乎有点戏剧化,我很好奇Schiller在发言中指的到底是哪九个账户。
尽管如此,根据谷歌最近发布的声明,Android仍然在不断提高普及力度——如今全球已激活Android设备数量达到7.5亿台。
就我了解到的情况,Schiller在“碎片化”及其它方面的强调与纠结似乎是为了掩饰Android在现实世界中取得的巨大成功。他还选择性无视了Android手机制造商推出更大屏幕设备的方针。
“鉴于iPhone 5拥有如此轻薄小巧的体形,而选择大号手机产品的用户只不过是希望能拥有与iPhone 5相仿的电池寿命,”他表示。
这种说法实在让人摸不着头脑,我们不禁要问:苹果到底有没有对三星和Android的威胁保持应有的关注与认识?
一家成功的企业,尤其是在高科技领域,必须学会调整前进方向并响应来自消费者的需求声音。
大家一定还记得史蒂夫•乔布斯曾断言小尺寸还没得出货就会死在路上。但就在几年之后,我们已经把iPad Mini捧在手中,这一切都要感谢更小、更便宜的Android所带来的竞争压力。
也就是说,事实上很多用户似乎真的对大屏幕手机情有独钟。在如今竞争激烈的市场环境中,采用一套尺寸设计通吃天下的iPhone虽然仍然实力强劲,却仍不足以抵消苹果对手们带来的威胁。
这并不是说苹果公司也有必要推出一款跟Galaxy Note系列尺寸相当的产品,但苹果的管理人员应当理解用户享受大屏幕手机的需求,而不是无视这一重要特性而反复强调什么“延长电池寿命”。
苹果需要开始以更认真的态度审视Android的崛起,而Schiller的采访发言似乎反映出苹果管理层仍然秉持着“Android被过度重视”这一愚蠢见解——这种论调相当危险,有可能将苹果推向万劫不复的深渊。
iPhone是一款伟大的产品,它率先发起并持续统领着这场智能手机革命。在我看来,iPhone 5仍然是目前市场上存在的最佳智能手机产品,当然这也是因为我还没实际体验过Galaxy S4。另外,我们也不知道S4的具体发布时间以及确切定价。
换言之,三星正在努力跟随苹果的脚本,而苹果最好认真对待三星所带来的威胁。
遥想当年,Mac机曾凭借极具吸引力的直观用户体验将世界带入图形化界面时代,但Windows却后来居上享用了革命成果。如今S4与iPhone 5之间的差距要远远小于当初Windows与Mac的差距,所以保持谨慎态度非常必要。
希望苹果公司内部的管理者都清楚地意识到这一现实,我也希望Schiller只是在故作姿态,打算借此给三星泼泼冷水。
ack相比grep的10大优点:
1. 更快:默认只搜索它预设的格式(如:.lua .py .c .cpp等)。
2. 更绿:只要安装了perl,下载个ack脚本即可。
3. 更方便:递归搜索目录是默认方式。
4. 更人性:默认忽略.svn / cvs / coredump 等明显不符合的物体。
5. 更大RE集:Perl RE,而非GNU RE的一个子集。
6. 更清晰:搜索结果支持颜色/高亮显示。
7. 更短:比grep短了25%! 比grep -r短了50%!
8. 更幽默:ack --thppppppppppppppppppppppppppppppppppppt
下面我们就来在ubuntu下配置一下:
1.在当前用户目录下创建bin目录(如果没有的话):mkdir ~/bin
2.下载ack:curl http://betterthangrep.com/ack-standalone > ~/bin/ack
3.更改ack文件模式:chmod 777 ~/bin/ack
4.复制到根目录下面:sudo cp ~/bin/ack /user/bin/
OK,配置完毕,我们可以随便cd到一个目录下面,搜索我们的关键字了,比如ack "way"。你会发现比grep爽n倍!!!