android 第一个程序hello world 两种实现

搭建好android开发环境后,开始开发第一个程序helloworld,在网上找了很多的例子,都是用自动的代码生成器。自己查了一些资料,完成了helloworld的两种UI写法,一种是xml定义出来。一种是用代码实现,在用代码实现的时候发现,跟SWT开发比较相近.

一)XML形式

在res/values/strings.xml中定义资源文件<stringname="hellowzg">myfirstandroidappishellowzg</string>

保存之后,会在R.java中生成

publicstaticfinalclassstring{

publicstaticfinalintapp_name=0x7f040000;

publicstaticfinalinthellowzg=0x7f040001;

}

在res/layout中新建一个文件hellowzg_main.xml用来定义页面的UI布局,在定义好文件之后,保存,插件会自动在R.java中生成

publicstaticfinalclasslayout{

publicstaticfinalinthellowzg_main=0x7f030000;

}

<RelativeLayoutxmlns: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">

<TextViewandroid:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerHorizontal="true"

android:layout_centerVertical="true"

android:text="@string/hellowzg"

tools:context=".MainActivity"/>

</RelativeLayout>

在src下新建com.example.myandroid.Hellowzg类继承Activity类,实现onCreate方法

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.hellowzg_main);

}

更改AndroidManifest.xml.其中应用的name是制定其启动时候调用的应用入口,其中默认的当前路径是package中定义的,尝试了一下更改了hellowzg类的路径,如果是用全路径也可以执行成功

<manifestxmlns:android="http://schemas.android.com/apk/res/android"

package="com.example.myandroid"

android:versionCode="1"

android:versionname="1.0">

<uses-sdkandroid:minSdkVersion="16"android:targetSdkVersion="15"/>

<applicationandroid:label="@string/app_name"

android:icon="@drawable/ic_launcher"

android:theme="@style/AppTheme">

<activity

android:name=".Hellowzg"

android:label="@string/hellowzg">

<intent-filter>

<actionandroid:name="android.intent.action.MAIN"/>

<categoryandroid:name="android.intent.category.LAUNCHER"/>

</intent-filter>

</activity>

</application>

</manifest>

二)用代码实现

感觉用代码实现的话,其很想SWT的开发。实际上就跟配置xml是一样的,可以对应来看。

不用在res中定义hellowzg_main.xml了,直接在com.example.myandroid.Hellowzg中修改onCreate方法,不用setContentView(R.layout.hellowzg_main);来放置定义的UI了,而是按照java的形式来实现。

<RelativeLayoutxmlns: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"></<RelativeLayout>

转为java代码的形式就是

RelativeLayoutrelativeLayout=newRelativeLayout(this);

LayoutParamslayoutParam=newLayoutParams(

ViewGroup.LayoutParams.WRAP_CONTENT,

ViewGroup.LayoutParams.WRAP_CONTENT);

relativeLayout.setLayoutParams(layoutParam);

<TextViewandroid:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerHorizontal="true"

android:layout_centerVertical="true"

android:text="@string/hellowzg"

tools:context=".MainActivity"/>

转为java代码的形式:

TextViewtext1=newTextView(this);

text1.setText("helloworld!");

LayoutParamslayoutParam2=newLayoutParams(

ViewGroup.LayoutParams.WRAP_CONTENT,

ViewGroup.LayoutParams.WRAP_CONTENT);

layoutParam2.addRule(RelativeLayout.CENTER_HORIZONTAL,RelativeLayout.TRUE);

layoutParam2.addRule(RelativeLayout.CENTER_VERTICAL,RelativeLayout.TRUE);

text1.setLayoutParams(layoutParam2);

本来以为android:layout_centerHorizontal="true"这种形式的,应该是TextView的属性,或者是LayoutParams中定义好的属性,直接调用方法,或者像SWT中用FORMLayout那样操作的方式,查询了资料,发现可以用addRule来操作.

然后

relativeLayout.addView(text1);

setContentView(relativeLayout);

就可以了

相关推荐