android开发二

当用模板生成一个hello,world apk后,该分析其结构了
工程下,以myfirst_1为例:
   myfirst_1
       |-------src--MainActivity.java
       |-------res--layout--activity_main.xml
                       --values--strings.xml
       |AnroidManifest.xml

一 查看androidmanifest.xml

        <activity
            
android:name="com.example.myfirst_1.MainActivity"
            android:label
="@string/app_name" >
            
<intent-filter>
                
<action android:name="android.intent.action.MAIN" />

                
<category android:name="android.intent.category.LAUNCHER" />
            
</intent-filter>
        
</activity>

这里可以看一个activity的定义,那啥是activity:Activity是一个容器组件,是一个承载界面,可以和用户进行交换的组件,有点类似PC上的window,但是不一样的是,通常一个Activity通常就占据了整个屏幕,而且当前只能有一个Activity与用户交互。
我们在代码src下添加了一个Activity后,必须同时在AndroidManifest.xml中声明整个activity,才是有效的。如果希望程序启动时,就打开你指定的Activity,则需要在那个activity节点当中加入

<intent-filter>
       
<action android:name="android.intent.action.MAIN" />
       
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

查看src下的mainactivity源码:

package com.example.myfirst_1;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {

    @Override
    
protected void onCreate(Bundle savedInstanceState) {
        
super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }


    @Override
    
public boolean onCreateOptionsMenu(Menu menu) {
        
// Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        
return true;
    }


}

可以看出继承自Activity类,重载onCreate方法,onCreateOptionsMenu用于菜单创建,非必须。
查看activitymain.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"
    android:paddingBottom
="@dimen/activity_vertical_margin"
    android:paddingLeft
="@dimen/activity_horizontal_margin"
    android:paddingRight
="@dimen/activity_horizontal_margin"
    android:paddingTop
="@dimen/activity_vertical_margin"
    tools:context
=".MainActivity" >

    
<TextView
        
android:id="@+id/textView1"
        android:layout_width
="wrap_content"
        android:layout_height
="wrap_content"
        android:text
="@string/hello_world" />

    
<Button
        
android:id="@+id/button1"
        android:layout_width
="wrap_content"
        android:layout_height
="wrap_content"
        android:layout_alignLeft
="@+id/textView1"
        android:layout_below
="@+id/textView1"
        android:text
="@string/next" />

</RelativeLayout>



 

android:id:控件的id,用于唯一确定控件。

android:layout_width,android:layout_height: 控件的宽高

id的写法一般是@+id/xxxxxx, 宽高的值可以为三种之一:wrap_content, fill_parent, match_parent.

wrap_content是指,在画控件时,根据控件的实际内容来动态确定大小。

fill_parent, match_parent实际上是一个意思,占满父容器的空间,区别只是match_parent是在Android2.2之后引进的。

android:text 是控件的文本内容,值可以直接填写,也可以引用values/strings.xml下的定义。例如

android:text="@string/next" 就是引用了res/values/strings.xml下的:

 

<resources>

    
<string name="app_name">myfirst_1</string>
    
<string name="action_settings">Settings</string>
    
<string name="hello_world">Hello world!</string>
    
<string name="next">下一步</string>
</resources>

如果这里不用这种引用,编译会出现一个警告should use @string resource


posted on 2014-04-04 11:57 snowhill 阅读(124) 评论(0)  编辑 收藏 引用 所属分类: java


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2006年12月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

导航

公告

又一年...........

留言簿(3)

随笔分类(13)

文章分类(131)

文章档案(124)

c++

java

linux

oracle

常用软件

其他

网络配置

系统安全

音乐

搜索

最新评论

阅读排行榜