当前位置:  编程技术>移动开发
本页文章导读:
    ▪Xcode 惯用快捷键及代码自动排版        Xcode 常用快捷键及代码自动排版Xcode常用快捷键,网上找的总结一下,特别是格式化代码 隐藏xcode command+h 退出xcode command+q 关闭窗口 command+w 关闭所有窗口 command+option+w 关闭当前项目 command+cont.........
    ▪ 挪动开发四国语言概览一:背景        移动开发四国语言概览一:背景当今移动开发炙手可热,以iPhone、Android、WP和Symbian、Bada等几大系统瓜分天下。 而相关的开发语言成为进入移动圣殿的钥匙,它们是:Objective-C、Java、C#和C++。.........
    ▪ AutoCompleteTextView按照关键字从服务器下获得数据显示上拉列表       AutoCompleteTextView按照关键字从服务器上获得数据显示下拉列表        最近项目原因,需要做出一个类似baidu搜索时下拉框的效果如图         于是乎想了多种办法,一种是利用AutoCompleteTextVi.........

[1]Xcode 惯用快捷键及代码自动排版
    来源: 互联网  发布时间: 2014-02-18
Xcode 常用快捷键及代码自动排版

Xcode常用快捷键,网上找的总结一下,特别是格式化代码

隐藏xcode command+h
退出xcode command+q
关闭窗口 command+w
关闭所有窗口 command+option+w
关闭当前项目 command+control+w
关闭当前文件 command+shift+w
保存文件 command+s
保存所有文件 command+option+s
还原到保存时状态 command+u

项目中查找 command+shift+F
查找下一个 command+g
查找上一个 command+shift+g

浏览源文件 command+Double Click
打开头文件 command+shift+d
切换头/源文件 command+option+上箭头


撤销 command+z
重复 command+shift+z
剪切 command+x
复制 command+c
粘贴 command+v
粘贴并匹配格式 command+option+shift+v
全选 command+a

注释 command+/
文件首行 command+上箭头
文件末 command+下箭头
行首 command+左箭头
行末 command+右箭头
上一单词 option+左箭头
下一单词 option+右箭头
上一拆分单词 control+左箭头
下一拆分单词 control+右箭头

Tab :接受代码提示
Esc :显示代码提示菜单

下个Build警告或错误 command+=
前个Build警告或错误 command+shift+=
以调试方式运行程序 command+y
继续(在调试中)command+option+p
编译运行 command+r

 

Xcode 代码格式化/自动排版:

Xcode  版本:4.2和4.2之前的版本
             选中需要格式化代码 -> Edit -> Format ->Re-Indent
Xcode 版本:4.2之后的版本
             选中需要格式化代码 -> Editor -> Structure ->Re-Indent 或者
             选中需要格式化代码 -> 右击 ->选中 Structure ->Re-Indent

2楼ccnyou前天 01:25强大。。。很不错的总结,收藏了,谢谢lz1楼weiqubo3天前 09:36CTRL+I

    
[2] 挪动开发四国语言概览一:背景
    来源: 互联网  发布时间: 2014-02-18
移动开发四国语言概览一:背景

当今移动开发炙手可热,以iPhone、Android、WP和Symbian、Bada等几大系统瓜分天下。

而相关的开发语言成为进入移动圣殿的钥匙,它们是:Objective-C、Java、C#和C++。

先来看看7月份的编程语言排名:


在来看看8月份的排名:


大家看到了,排在前五名的是C、Java、Objective-C、C++和C#。经常关注语言排名的童鞋应该惊诧的发现,

Objective-C在7月份竟然超过了C++位居前三甲了。是的,这是历史上的第一次。TIOBE编程语言排名依据世界范围内

软件工程师、课程和厂商的数量,通过计算得来。这足以反映了语言的流行程度。说起这四国语言,不得不说一下排在

第一位的C语言,原因大家应该是心知肚明,C是四国语言的始祖。这么说应该是不为过的。

C语言

C语言与Java的排名之争持续了数年,2012年C语言已经成为霸主几个月之久了。足以看见C语言是深受广大程序员喜爱的一门语言。

说起C语言的来历,其实也是历史的必然,是水到渠成的。它并不是突然降临的。

20世纪60年代,一个划时代的ALGOL语言问世。说它是划时代,是因为它是第一个结构化程序设计语言,也被称作A语言。

1963年,剑桥大学的科学家通过A语言发展出CPL语言。

1967年,剑桥大学的Martin Richards将CPL简化,成为BCPL语言。

1970年,贝尔实验室的Ken Thompson对BCPL进行了修改,产生了B语言。而第一版的UNIX系统就是用B语言编写。

1972年,贝尔实验室的Dennis Ritchie在B语言的基础上做了进一步的改进和发展,设计出了一门新语言,这就是C。

1978年,贝尔实验室正式推出了C语言。而Dennis Ritchie和Brian Kernighan合著了著名的《The C Programming Language》,

史称"K & R C",K 和 R标准的C语言。

1989年,C语言被ANSI标准化。这就是ANSI C。

2000年,ANSI C 确立后,之后是没有多少改变的。直到2000年2月,ANSI采用了ISO的C99标准。

2011年,新的ISO标准发表,这就是C11.

从C语言发展的世界表可以看出,C语言一经推出、确立后,改变是很少的。这样就出现了一个现象,C语言的程序员凭着积累,慢慢的终成大师。

C语言的繁荣,对软件业界影响深远。很多程序语言都是从C语言发展而来的,让我们先来看看两个直系亲属:C++和Objective-C。

C++

1979年,贝尔实验室的Bjarne Stroustrup对C语言进行改进和扩充,为了满足程序的复杂性需要和便于大型软件开发的特点。此时为“C with classes”(带类的C语言)。

1983年,“C with classes”改名为C++,并引入了新特性。

1985年,发布第一版《C++编程设计语言》。

1989年,发布Release2.0.同时引入了一些新特性。

与C语言一样,一个语言的标准化进程是非常重要的,这样杜绝了方言的产生,对语言的发扬光大起到了重要作用。

下面列出几个几个标准化:

1998年,对应C++98。

2003年,C++03。

2007年,C++TR1。

2011年,C++11.

C++包含了C的全部特征、属性和优点。在业界影响至深。在移动领域,Symbian和Bada的开发语言都采用了C++,这种Native语言运行的速度是非常快的,较之Java和C#有着运行速度的优势。虽然今天的手机配置越来快高,速度越来越快,但这样还是弥补不了Java和C#的速度之痛,在游戏领域,这点是令人诟病的。另一方面,C++的开发速度就并不能和运行速度相比了。C++,在很多人眼中是很难的,尤其在界面方面。而Bada系统提供的UI库是非常容易使用的,而Symbian后来的版本都加入了Qt库的支持,这点相信大家都知道,Qt库就是做图形界面出名的,在业界如雷贯耳。这两方面都弥补了C++在手机领域开发速度的不足。相信大家用上之后都会觉得不错。

Objevtive-C

这门语言是很传奇的,就像已故的乔帮主一样。从我个人的理解上,Objective-C是跟乔帮主分不开的,虽然它并不是乔帮主发明的语言。

1980年代初,这个时间段与C++相仿。Brad Cox发明了Objective-C。

1985年,Steve Jobs(被我们俗称为乔帮主)被自己创立的Apple公司“开除”(这个词不恰当,但也描述了事实),成立NeXT公司。

1986年,发布《Object-oriented Programming, An Evolutionary Approach》作为Objective-C最主要的语言描述。

1988年,NeXT 获得了Objective-C的授权,并开发出了Objective-C的语言库和NEXTSTEP开发环境。

1994年,NeXT和Sun联合发布了针对NEXTSTEP的标准典范,称为OPENSTEP。

1996年,Apple收购NeXT,NEXTSTEP/OPENSTEP环境成为Apple操作系统的基础,此开发环境的该版本被Apple称为Cocoa。

Objective-C被推出后数载,一直是默默无闻的。在C++的光芒下,人们并不知道有Objective-C这个C++的兄弟存在。Objective-C的流行程度是微乎其微的。甚至在语言排行榜上看不到踪影。看看这个对比图:


在2007年,Objective-C终于出现在人们的视野里,因为那一年iPhone发布了。短短的五年时间里,iPhone在移动市场上无坚不摧,乔帮主发起了一场革命。这场革命革掉了手机霸主Nokia的命,革掉了老牌劲旅Moto的命,而给Objective-C带来了新生。短短的五年时间,Objective-C从排名47的冷门语言变成了今天排名第三的炙手可热的大热门!

如果你是其他语言的行家,后来才去学习Objective-C,那么你会发现这门语言是很有意思的,很多地方都与你原来的习惯不同,因此被称作火星语言。

目前正在学习的是Objective-C 2.0.

Java

Java语言是由Sun公司设计的,其中代表人物是James Gosling。可以说,Java是由C++、Objective-C等语言发展而来的,是C的第二代传人。

1990年代初,Sun开发了Oak,目标定位于小型系统如家用电器等领域。这是Java的雏形。智能电器领域的发展没有预期的好,不过,Sun公司却赶上了互联网的大潮。

1995年,Sun看好互联网应用,将Oak改造适应互联网的Java并正式发布。Java坐上了互联网的快车,发展更是迅猛。可以说,Java的发展跟互联网是分不开的。此后Java语言的发展顺风顺水。

1996年,JDK1.0诞生。

1997年,JDK1.1发布。

1998年,J2EE发布。这是Java的企业平台版本。

1999年,Sun发布Java的三个版本,就是现在定型的J2SE(标准版)、J2EE(企业版)、J2ME(微型版)。

2000年,JDK1.3发布,随后不到一个月,JDK1.4发布。

2001年,Nokia宣布发布支持Java的手机。J2EE1.3发布。

2002年,J2SE1.4发布,Java的运算能力大幅度提升。

2004年,J2SE1.5发布,这是Java重要的里程碑,遂又将J2SE1.5称作J2SE 5.0。

2005年,Java SE 6公布,随之而来的是Java版本的更名,取消2字:J2SE 就是Java SE ,以此类推。

2006年,JRE6.0发布。

2009年,Sun被Oracle并购。

2011年,发布Java SE 7。

Note

JDK:是Java Development Kit的缩写,译为Java开发工具包。里面包含了各种类库和工具,以及另一个JRE。

JRE:Java Runtime Envirenment,Java运行时环境。是Java运行所必须的环境的集合。

最后要感慨一下,

Java的大热没有给Sun公司带来可观的经济利益;Sun公司的领导人手中握着Java这个强大的武器,并没有找到经济利润上的可持续发展道路,这点真是令人叹息。Sun被Oracle并购也两年多了,此间的传闻不断,其实这是Oracle在使用Java这个武器时发出的声响。以后Java在Oracle旗下如何发展,我们拭目以待。而在Android中,Java的使用上面,Google与Oracle也是摩擦不断。当时Android选用Java作为主要开发语言也是看到了Java的用户群,但现在Android的开发人员居世界之首,Google应该不会把Oracle放在心上的。开发应用程序,多数是用Java。而开发底层的,C还是少不了。还有很多人,要进行Java和C的混合开发。

C#

微软的C#与Java的语言相似度高达80%以上。这是前人帮我们总结的,所以,我们学习C#应该是很轻松的。

C#可以说是C的第三代传人了。

当Java借助互联网大潮大肆攻城掠寨之时,微软才发现自己晚了那么一步。但是出击还是及时的,也算是亡羊补牢吧。

2000年,微软发布C#语言的第一个预览版本。

2002年,伴随着.NET的正式推出,C#1.0正式版才与观众见面。

2005年,.NET 2.0 随着VS 2005的推出,C#2.0也正式与观众见面。

2007年,.NET 3.5 、VS 2008以及C# 3.0一起问世。

2010年,.NET 4 、VS 2010 及C# 4.0问世。

2012年,就在今年,.NET 4.5、VS 2012 和C# 4.5就要问世了。

C#是专门为.NET平台设计的,这种原生的基因,保证了C#以后的健康发展。C#是跑在.NET运行时中的,这种机制与Java和Java虚拟机是相同的。运行速度并是它的软肋,可是开发速度是它所擅长的。在WM时代,C#开发的应用程序要比C++开发程序快很多。但是需要运行速度的程序对此还是不满的,因为在Android中可以用Java+C/C++混合编程解决速度瓶颈,而WP7中只能用C#开发,不支持原生C++开发,这一点据说在WP8中改善了。

C#是易学易用的,初学者很容易上手。.NET库有着十分完备的文档(MSDN),学习曲线还是很平滑的。

总结

历史是向前发展的,知识是向后传承的。

下面的一幅图描述了这部分编程语言的继承关系:


参考文献

1、TIOBE编程语言排名网站

2、维基百科网站

3、钱能 《C++程序设计教程》

4、薛园园 《C语言开发手册》


    
[3] AutoCompleteTextView按照关键字从服务器下获得数据显示上拉列表
    来源: 互联网  发布时间: 2014-02-18
AutoCompleteTextView按照关键字从服务器上获得数据显示下拉列表

        最近项目原因,需要做出一个类似baidu搜索时下拉框的效果如图

        于是乎想了多种办法,一种是利用AutoCompleteTextView+ListView方式,但是这种方式有一个缺点就是需要用帧布局,同时在利用AutoCompleteTextView.addTextChangedListener方法控制ListView的显示和消失时遇到一个很大的问题就是无法让其消失,即使你选中了一个条目,因为TextChanged的原因,ListView也是以一条你选中的条目为显示内容的形式在AutoCompleteTextView的下方,没有找到好的解决办法。

        之所以想到以上这种办法的原因是在项目的一开始没有使用AutoCompleteTextView的原生态的下拉列表(有各种各样的不更新造成的),后来在使用AutoCompleteTextView+ListView无效的情况下只能回到AutoCompleteTextView的原生态的下拉列表的方法上。

        http://stackoverflow.com/tags/autocompletetextview/hot这是stackoverflow上关于AutoCompleteTextView的FAQ,从中我们可以看到有多个关于从网上获取条目然后显示在AutoCompleteTextView的列表之上的问题和相应的回答。最终选中了http://stackoverflow.com/questions/8653260/autocomplete-in-android-not-working-with-dynamic-data这个问题当中名为iNan的解答,并对其进行了改进。

        具体代码如下

WikiSuggestActivity 

import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;

import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
/**
 * @Title: WikiSuggestActivity.java
 * @Package com.yang.testautocompletetextview
 * @Description: 参考http://stackoverflow.com/questions/8653260/autocomplete-in-android-not-working-with-dynamic-data
 * @author Yang  
 * @date 2012-8-12 下午2:59:54
 * @version V1.0
 */
public class WikiSuggestActivity extends Activity {
	public String data;
    public List<String> suggest;
    public AutoCompleteTextView autoComplete;
    public ArrayAdapter<String> aAdapter;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        suggest = new ArrayList<String>();
        autoComplete = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1);
        autoComplete.addTextChangedListener(new TextWatcher(){

            public void afterTextChanged(Editable editable) {

            }

            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            public void onTextChanged(CharSequence s, int start, int before, int count) {
                String newText = s.toString();
                new getJson().execute(newText);
            }

        });

    }
   class getJson extends AsyncTask<String,String,String>{

    @Override
	protected void onPostExecute(String result) {
		super.onPostExecute(result);
		 aAdapter = new ArrayAdapter<String>(getApplicationContext(),R.layout.item,suggest);
         autoComplete.setAdapter(aAdapter);
         aAdapter.notifyDataSetChanged();
	}

	@Override
    protected String doInBackground(String... key) {
        String newText = key[0];
        newText = newText.trim();
        newText = newText.replace(" ", "+");
        try{
            HttpClient hClient = new DefaultHttpClient();
            HttpGet hGet = new HttpGet("http://en.wikipedia.org/w/api.php?action=opensearch&search="+newText+"&limit=8&namespace=0&format=json");
            ResponseHandler<String> rHandler = new BasicResponseHandler();
            data = hClient.execute(hGet,rHandler);
            suggest = new ArrayList<String>();
            JSONArray jArray = new JSONArray(data);
            for(int i=0;i<jArray.getJSONArray(1).length();i++){
            String SuggestKey = jArray.getJSONArray(1).getString(i);
            suggest.add(SuggestKey);
            }

        }catch(Exception e){
            Log.w("Error", e.getMessage());
        }
        return null;
    }

   }
}
activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <AutoCompleteTextView
        android:id="@+id/autoCompleteTextView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:ems="10" />
    <!-- android:ems  设置TextView的宽度为N个字符的宽度。这里测试为一个汉字字符宽度 -->

</RelativeLayout>
item.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" 
android:layout_height="wrap_content"  
android:id="@+id/online_user_list_item_textview" >
</TextView>
效果图如下:



整个项目代码下载地址



    
最新技术文章:
▪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