当前位置:  编程技术>移动开发
本页文章导读:
    ▪开放不自是唯一的价值观(转)        开放不应是唯一的价值观(转) 文/郝培强 一段时间以来,开发者的圈子里面,有很多对苹果公司,以及iPhone OS平台(包括iPhone、iPod touch、iPad)批评的声音,主要是批评这个平台不开放。.........
    ▪ 滑条自动跳转,展示控件的新条目        滑条自动跳转,显示控件的新条目 经常需要用ListView或者其它显示大量Items的控件实时跟踪或者查看信息,并且希望最新的条目可以自动滚动到可视范围内。通过设置的控件transcriptMode属性可.........
    ▪ 依据联系人获得即将来临的生日       根据联系人获得即将来临的生日 private static final int UPCOMING_COUNT = 10;   public static List<BContact> upcomingBirthday(Context ctx) {     String today = new SimpleDateFormat("MM-dd").format(new Date());            .........

[1]开放不自是唯一的价值观(转)
    来源: 互联网  发布时间: 2014-02-18
开放不应是唯一的价值观(转)

文/郝培强

一段时间以来,开发者的圈子里面,有很多对苹果公司,以及iPhone OS平台(包括iPhone、iPod touch、iPad)批评的声音,主要是批评这个平台不开放。有些批评是很诚恳的,直击要害的,而有些完全是空穴来风,以讹传讹。

首先,开放不是一个简单的概念。

在智能手机出现之前,手机上的操作系统往往是制造厂商私有的,上面的软件往往是内置的,只有制造厂商才能开发上面的程序,而且大部分机器根本不支持安装新软件。这才是真正的封闭。

有了智能手机后,虽然有大量的平台和语言我们可以选用,但是实际上并没有形成蓬勃发展的应用程序市场。

J2ME曾经幻想给手机应用市场带来繁荣。但实际上,一方面,为了保证兼容性,J2ME放弃了很多功能,性能和应用场景也大大受限,很难开发出让用户使用方便而且功能强大的程序。

而在另外一个方面,它没有比较完善的界面和操作方面的标准,支持了各种形形色色的手机之后,实际上的兼容性又完全无法得到保证,很少有程序可以真的完美支持多款手机,尤其是游戏类应用,真正地做到兼容多款手机的凤毛麟角。

Nokia坚持了S40和S60的两条战线,在标准化和产品多样性上做到了比较好的平衡。曾经被认为是手机应用市场的救星,然而这10年 来,Nokia的手机虽然外观日新月异,但是软件和操作系统方面的改进乏善可陈。而且Symbian系统开发难度一直过高,Nokia也没有在 Symbian平台发展势头最好的时候推出类似AppStore这样的商业模式出来。所以,在iPhone出现以后,大量有志于移动开发的开发者,开始放 弃Nokia和Symbian平台。

现在不管是从各平台手机应用的数量、质量,以及开发者的收益来看,我们都可以说是苹果推出iPhone是手机应用市场真正繁荣的开始。

当然毋庸置疑,苹果在某些方面确实很封闭。但是,我并不认为这完全是坏事儿。

软件行业未来的图景,不应该只有开源软件,只有商业软件,或者只有AppStore下的软件。这三种不同的模式,互相之间形成了非常良好的补充。

在iPhone/iPod touch和iPad这样的特定领域里,AppStore模式的威力惊人。去看看苹果财报你就会知道这开辟了多大的一个 第三方软件市场。智能手机这个概念出现快10年了,从来没有一个平台上,聚集了这么多的第三方开发者,这么多的免费和付费的优秀应用。以前,第三方开发者 当然也在赚钱,但是以这样规模和形式聚集在一个平台下,是前所未见的。

假设iPhone OS平台一切都不变,只是去掉AppStore,我们会发现,很多现在已经发财了的第三方开发者,他们还仅仅是在梦想发财而已。所以,一定程度上的封闭也不见得是万恶之源。

正是因为在应用发行的时候,严格的需要苹果公司签署的开发者证书,最大程度地防止了盗版,使得各种付费应用的销量得到了保证。也正是因为有了被很多 人诟病的,甚至可以说过于严格的质量审核,才保证了AppStore内的程序都有一定的质量水平,这样就会让消费者喜欢在AppStore里面寻找和购买 更多的程序。

更何况,苹果公司在未来的图景上,只是绚烂的一块,不是全部。开源/商业/AppStore三种模式,我认为在未来各有所长,也会各得其所。

我多次强调,喜欢开放的人,心态更要开放。要允许这世界有人不想开源,不想开放,这才是开放的心态。你热爱CopyLeft,你大可以把你的代码都开源了。但是CopyLeft的精神绝不包括强迫别人开源(受授权限制则令当别论)。

我也认同源代码开放的精神,自己也在维护开源项目,但是做这些开源项目,和我做iPhone这样的相对封闭平台上面的项目,完全没有产生任何的冲突。

我乐见在未来开源/商业/AppStore三种模式,各显神通,都蓬勃发展。事实上,开源兴起,并没有杀死商业,反而扩大了我们整个软件行业的视野和疆域。App Store也具有类似的作用,我期待它给我带来更多的惊喜。


原文:http://www.programmer.com.cn/4070/


    
[2] 滑条自动跳转,展示控件的新条目
    来源: 互联网  发布时间: 2014-02-18
滑条自动跳转,显示控件的新条目

经常需要用ListView或者其它显示大量Items的控件实时跟踪或者查看信息,并且希望最新的条目可以自动滚动到可视范围内。通过设置的控件transcriptMode属性可以将Android 平台的控件(支持ScrollBar)自动滑动到最底部。
源代码:

<ListView android:id ="@android:id/list"                
                  android:layout_width ="fill_parent"                 
                  android:layout_height ="fill_parent"                 
                  android:stackFromBottom ="true"                
                  android:transcriptMode ="alwaysScroll"                /> 

 

 

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yanghw0510/archive/2010/08/18/5819854.aspx


    
[3] 依据联系人获得即将来临的生日
    来源: 互联网  发布时间: 2014-02-18
根据联系人获得即将来临的生日

private static final int UPCOMING_COUNT = 10; 
 
 
public static List<BContact> upcomingBirthday(Context ctx) { 
    String today = new SimpleDateFormat("MM-dd").format(new Date());         
    List<BContact> firstPart = upcomingBirthday(ctx, today, "12-31", UPCOMING_COUNT); 
    if (firstPart.size() < UPCOMING_COUNT) { 
        firstPart.addAll(upcomingBirthday(ctx, "01-01", today, UPCOMING_COUNT - firstPart.size())); 
    } 
    return firstPart; 

 
 
public static List<BContact> upcomingBirthday(Context ctx, String fromDate, String toDate, int rows) { 
 
  Uri dataUri = ContactsContract.Data.CONTENT_URI; 
 
  String[] projection = new String[] { ContactsContract.Contacts.DISPLAY_NAME,                          
            ContactsContract.CommonDataKinds.Event.CONTACT_ID, 
            ContactsContract.CommonDataKinds.Event.START_DATE 
            }; 
 
 
  Cursor c = ctx.getContentResolver().query( 
       dataUri, 
       projection,  
       ContactsContract.Data.MIMETYPE + "= ? AND " +  
       ContactsContract.CommonDataKinds.Event.TYPE + "=" + ContactsContract.CommonDataKinds.Event.TYPE_BIRTHDAY +  
       " AND substr(" + ContactsContract.CommonDataKinds.Event.START_DATE + ",6) >= ?" +  
       " AND substr(" + ContactsContract.CommonDataKinds.Event.START_DATE + ",6) <= ?" , 
       new String[] {ContactsContract.CommonDataKinds.Event.CONTENT_ITEM_TYPE, fromDate, toDate},  
       "substr("+ ContactsContract.CommonDataKinds.Event.START_DATE +",6)"); 
  List<BContact> result = new ArrayList<BContact>(); 
  int i=0; 
  while (c.moveToNext() && i<rows) { 
      result.add(new BContact(c.getString(0), c.getString(1), c.getString(2))); 
      i++; 
  } 
  c.close(); 
  return result; 


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3