首页 > 编程语言 >Android学习笔记(三):Andriod程序框架

Android学习笔记(三):Andriod程序框架

时间:2023-08-04 23:36:10浏览次数:39  
标签:xml layout res 笔记 Andriod java Android android


修改Eclipse的字体,我希望大一些,反正22寸的显示屏:

Window->Preferences->General->Apprearance->Colors and Fonts -> Java -> Java Editor Text Font(...) -> Edit

在此次,我们先创建一个Hello,Android的程序,并既而讨论Andriod的程序架构。



1、创建project:File > New > Project > Andriod > Andriod Project

2、如图填入poject信息

  • Project Name:这是project的名字,同时根据这个名字在workspace中自动生成相关目录(见location)。
  • Application Name:这个映用的名字,加载在Andriod设备中,图标上显示的映用名称。
  • package Name:这是java的package的名称,这里,我使用了com.wei.learning.helloandriod。为了避免名称冲突,采用了标准的namespace的方式。
  • Create Activity:这是Andriod的Activity子类的名称,一个Anctivity是一个可执行的类,相当于main。
  • Min SDK Version,这是表明该映用能够兼容的最小的API版本号,这里选择了7,也就是可支持Andriod 2.1以上的版本。通常选择Build Target的编译版本一致。Andriod是前向兼容的,以本例子为例,可以在Andriod 2.2的平台上跑,但是如果我们在Build Target中选择了2.2,不能保证则会2.1的平台上跑。

Android学习笔记(三):Andriod程序框架_android

如果我们不是用Eclipse,我们也可以用命令行生成project,如下:

android create project /
    --package com.wei.learning.helloandroid /
    --activity HelloAndroid /
    --target 2 /
    --path <path-to-your-project>/HelloAndroid

3、写我们的Hello,Andriod例子

在HelloAndriod/src/com/wei/learning/helloandriod/中是我们的源代码文件,这里只有一个,HelloAndriod.java,内容如下:

package com.wei.learning.helloandriod;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;//在Eclipse中可以简单采用Shift+Ctrl+O可以自动根据内容生成所需要的import的package。

public class HelloAndriod extends Activity {  //一个Activity是实体用于处理用户操作,一个映用可以多个分割的activities,但同一时刻用户主能与其中一个互动
   /** Called when the activity is first created.
     * 这里的注释采用javadoc的标准写法,以便生成我们的API的HTML文档。
     * OnCreate()用于初始化和UI的建立。*/
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
         /* View是在UI layout中使用的元素,包括button等等,这里使用TextView。创建对讲后,设置文本内容,最后使用setcontentView()来将tv对象防止在activity UI中。*/
        TextView tv = new TextView(this);
        tv.setText("Hello, Andriod!");
        setContentView(tv);

        //setContentView(R.layout.main);
    }
}

4、javadoc的注释

javadoc的注释方式已经忘得差不多,需要复习一下。

/** ...... */ 注释若干行,并写入 javadoc 文档,命令行为:javadoc -d 文档存放目录 -author -version 源文件名.java,在Eclipse中Porject-> Generate Javadoc...

在/** */里面是可以使用HTML的脚本,例如<li>,<br>等等。可以在类,方法之前加入注释说明。例子如下:

/**
* 方法/类的简述.
* <p>详细说明第一行<br>
* 详细说明第二行
* @param ,用于参数描述
* @return ,描述返回之没有返回值
*/

@author 标明开发该类模块的作者
@version 标明该类模块的版本
@see 参考转向,也就是相关主题
@param 对方法中某参数的说明
@return 对方法返回值的说明
@exception 对方法可能抛出的异常进行说明
@author 作者名
@version 版本号

5、运行

菜单Run > Run,或者直接按三角图标,选择”Andriod Application“,将会启动模拟器,由于我们设置为2.1的编译环境,将会启动我们创建的VM2.1来运行。结果如下左边图,按右边返回键,可以见右图,图标等信息已将安装。

 

Android学习笔记(三):Andriod程序框架_eclipse_02

6、project的相关内容

我们先将例子跑起来,回过头,我们认真看看Andriod project的结构,如图所示。图中所见的结构同我们在project目录,目录有:
AndroidManifest.xml  bin/  gen/ res/ assets/ default.properties  proguard.cfg  src/

gen/

gen/下面有一个重要的文件R.java,这个文件由系统为一些资源自动生成唯一标识的ID,想象以前的VC中也有类似的文件。R相当于resourse。

assets/

放入project所需的内容,例如图片。

Android学习笔记(三):Andriod程序框架_application_03

res/

我们在res/中加入某些资源,例如一个图标,会在gen/下的R.java中生成一个ID,而assets下的资源将不会,需要通过路径来进行访问。res/drawable/中用于存放image,对于图标,提供h,m,l三个分辨率,以适用不同分辨率的设备。

在res/layout/下的xml文件,用于管理我们的UI,对于一个复杂的UI,如果需要改动一点,有时都不知从何开始,因此Andriod提供了Andriod XML文件。在Andriod的plugin自动生成了main.xml,我实验了一下,修改无效,只是提供信息,这是因为我们在程序用对相关组件进行了code,在本例子中如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello"
    />
</LinearLayout>

xml是树状接口,首先描述Layout,然后在Layout中描述各个View和Layout,也就是layout可以嵌套。,只要是View的继承类即可,包括自己定义的。如上所示的就是我们这个例子的一个View的描述。

andriod:这是XML中的定义,说明使用xmlns:andriod作为其namespace。andriod:layout_width 由于例子中只有唯一的元素,可以占用全屏,使用fill_paren。

如果我们希望可直接通过修改XML来进行布局,而不是通过在源代码中进行code。

1) 在main.xml中的TextView中修订为:

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/textview"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello"
    />

保存后,我们查看R.java文件,增加了textview的ID。为了和原来的区别,我们修改text内容,在res/values/strings.xml中,修改:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, I/'m your friend!</string>
    <string name="app_name">Hello,Andriod</string>
</resources>

让这些内容有效,修改HelloAndriod.java的内容,如下:

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main); //原来是传递一个View对象,现在是传递R.layout.main,R的定义见R.java,而R.layout.main就是对应res/layuot/main.xml。
    }

Android学习笔记(三):Andriod程序框架_android_04

我们在main.xml中增加以下的属性

    android:layout_weight="2"
    android:textSize="25pt"
    android:gravity="center_horizontal"
    android:background="#999999"
    android:textColor="#aa5533"

其中gravity有以下的选项:top,bottom,left,right,center_vertical,center_horizontal,center,fill_vertical,fill_horizontal,fill,执行如图。

libs/

如果需要使用第三方的JAR,这放置在此。在这个例子中没有。

AndridoManifest.xml

Mandifest这个名字很熟悉,是我们将java程序压缩为jar包,并生成可执行文件的时候需要使用的一个文件。在这里描述应用的内容,有点向linux rpm中的*.spec文件。表明应用的名称,版本,图标位置,最低版本要求等等。在Eclipse中点击后,可以有图形话界面解释。这是文件的部分内容:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.wei.learning.helloandriod"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="7" />

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".HelloAndriod"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>

在这里icon为:@drawable/icon,就是在res/drawable/中名字为icon的image。而@string/app_name,表示在res/values/strings.xml中的定义名字为app_name的字符串,在这个例子中文"Hello,Andriod"。activity这里表明的activity的执行目标的类名称。

如果我们需要给我们的应用设定用户的许可,例如允许使用GPS,可以加上<uses-permission android:name="android.permission.ACCESS_GPS /">

每一个Activity都需要在Andriodmanifest.xml文件进行注册。一个映用有多个Activity,里面的类名".HelloAndriod",注意是有一个".",它和package结合起来就是一个完整的类命。而后面<intent-filter>...</intent-filter>中有android.intent.action.MAIN,表明这是应用启动时需要启动的Activity。

 

参考来源:http://developer.android.com.nyud.net/resources/tutorials/hello-world.html

相关链接: 我的Android开发相关文章

标签:xml,layout,res,笔记,Andriod,java,Android,android
From: https://blog.51cto.com/u_9877302/6970010

相关文章

  • 数据挖掘笔记(二)
    数据挖掘常用的方法利用数据挖掘进行数据分析常用的方法主要有分类、回归分析、聚类、关联规则、特征、变化和偏差分析、Web页挖掘等,它们分别从不同的角度对数据进行挖掘。①分类。分类是找出数据库中一组数据对象的共同特点并按照分类模式将其划分为不同的类,其目的是通过分类......
  • Android学习笔记(三五):再谈Intent(下)-一些实践
    Android的UI框架要求用户将他们的app分为activity,通过itent来进行调度,其中有一个mainactivity由Android的launcher在桌面中调用。例如一个日历的应用,需要查看日历的activity,查看单个事件的activity,编辑事件的activity等等。在查看日历的activity中,如果用户选择的某个事件,需要通过......
  • 算法工程师学习运筹学 笔记二 线性规划
    线性规划 框架图先放在这里图片由知乎@运筹说提供,原文链接:https://zhuanlan.zhihu.com/p/382644742  线性规划模型标准型 标准型如上目标函数求max;约束条件两端用“=”连结;右端常数项非负;所有决策变量非负。(如有决策变量没有约束,则把该变量拆成两个正数变量......
  • android mvvm实例解析
    MVVM架构,将整个应用分为三层,View层,VM层,Model层。其中View层单向引用VM层,VM层单向引用Model层。如上图。单向引用,而非双向引用,这是MVVM与MVP最大的区别。View层,只是单向引用VM层,VM层不需要引用View层,但是却可以更新View层。这是通过VM层的观察者模式实现的,在这里使用架构组件Liv......
  • Android面试必看手册,错过了金三银四可别再错过金九银十了
    眼看着时间一天一天地过去,距离金九银十也就二十多天的日子了,还有多少程序员是两眼摸黑不知道面试要做哪些准备的朋友?还不知道进大厂需要复习哪些资料的朋友可以看过来,知道有些朋友会没什么准备跟无头苍蝇一样所以博主早在一个月前就已经在各大网站和教育平台收集了大量面试相关的资......
  • 大一新生必读:如何选择适合自己的笔记本电脑?
    大家好,这里是程序员晚枫,今天给大家推荐5个适合大学生,尤其是大一新生使用的笔记本电脑。都是大品牌,而且价格实惠,性能优秀!01推荐电脑以下是5个适合大一新生的电脑,满足性价比高、性能好、销量好、大品牌的要求:联想小新Pro14这是一款搭载AMDRyzen55600H处理器的轻薄本,性能强......
  • 《深入理解Java虚拟机》读书笔记:HotSpot虚拟机对象探秘
    基于实用优先的原则,以常用的虚拟机HotSpot和常用的内存区域Java堆为例,深入探讨HotSpot虚拟机在Java堆中对象分配、布局和访问的全过程。以下是本节内容的脑图。 HotSpot虚拟机对象探秘脑图 一、对象的创建创建对象大致分为5步:1.检查类是否加载,没有加载先加载类2.分配内......
  • 【学习笔记】数论之筛法
    前言:可以会乱记一些技巧吧。交换求和顺序如果不确定可以将条件写成[A]的形式,交换完求和顺序再把这个条件放里面。例如:\[\sum_{i=1}^n\sum_{d}[d|i]=\sum_{d=1}^n\sum_{i}[d|i]=\sum_{d=1}^n\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}1\]狄利克雷前缀和与狄利......
  • CMU15445-2023 笔记:Project 0 - Copy-On-Write Trie
    CMU15445-2023笔记:Project0-Copy-On-WriteTrieInthisproject,youwillimplementakey-valuestorebackedbyacopy-on-writetrie.Triesareefficientordered-treedatastructuresforretrievingavalueforagivenkey.Tosimplifytheexplanation,we......
  • k8s 学习笔记之 Pod 控制器——ReplicaSet(RS)
    Pod控制器介绍Pod是kubernetes的最小管理单元,在kubernetes中,按照pod的创建方式可以将其分为两类:自主式pod:kubernetes直接创建出来的Pod,这种pod删除后就没有了,也不会重建控制器创建的pod:kubernetes通过控制器创建的pod,这种pod删除了之后还会自动重建什么是Pod控制器Pod控制......