zoukankan      html  css  js  c++  java
  • android开发手记一

    1. 初识安卓—工具准备

    一般是要下载java,eclipse,android sdk。

    下载java sdk,配置环境变量。测试java是否安装成功。

     

    然后去android developers网站http://developer.android.com/sdk/index.html,下载对应的版本(例如adt-bundle-windows-x86-20131030.zip),解压到特定文件夹,启动解压的目录下(如F:adt-bundle-windows-x86-20131030eclipse)的eclipse(因为这个版本已经包含了eclipse)即可

    1. 第一个app开发

    在eclipse中,点击New à Android Application Project,输入如下内容

     

    点击Next,出现如下设置启动图标

     

    本例中直接Next,然后进入activity模板设置界面

     

    本例选择Blank Activity,Next

     

    Finish结束。

    1. 运行App

    在开发之前,有必要先了解下一些重要文件的组成。

    (1)       AndroidManifest.xml

    这个文件定义了一些这个app的基本特征,其中最重要的一个元素是<uses-sdk>,它用来描述了这个app与android的适配程度,android:targetSdkVersion这个元素应该尽可能高,表示最新版本,并在其描述的版本下进行测试。

    (2)       src/

    app的源代码目录,默认包含一个app启动时使用app icon的Activity类

    (3)       res/

    包含一些子类。

    1)  drawable-hdpi/

    drawable objects (such as bitmaps)的目录,用于高分辨率屏幕。

    其他drawable目录包含对应分辨率的目录

    2)  layout/

    用于定义app用户界面的文件

    3)  values/

    各种xml文件目录,包含String和color等定义。

             当你运行一个默认的app,它会首先调用默认的Activity类,然后加载layout文件,显示helloworld

    1. 运行在真实的机器

    使用usb数据线接上电脑,在安卓机启用USB debugging。(如果是android 3.2以前的是在设置 – 应用  --- 开发,4.0以后在设置 – 开发选项,其中开发选项默认是隐藏的,需要在设置 --- 关于手机里,点击Build number 7次,再回去就发现有该选项了)

    在eclipse中运行

    打开项目中任一文件,点击 Run   ,在弹出框选择android application,这时eclipse便会自动在手机上安装该应用,然后启动

    1. 运行在虚拟机上

    首先需要创建个Android Virtual Device。在eclipse中点击Android Virtual Device Manager ,点击New,输入虚拟机名称,目标平台,SD卡大小,和皮肤(默认是HVGA),

    1. 构建简单的UI界面

    Android的UI是通过使用一系列View和ViewGroup对象。View对象组件通常是一些buttons,text fields之类的组件,而ViewGroup对象是View的容器,用于定义组件如何显示。

    在android中,是通过XML来定义组件的层级架构。

    (1)       在res/layout/以XML Viewer打开activity_main.xml

    样式如下

     

    首先删除TextView元素,并将<RelativeLayout>改成<LinearLayout>,并添加android:orientation属性,设置其值为"horizontal",效果应该如下

     

    LinearLayout是一个ViewGroup子类,按照orientation属性来显示child views,LinearLayout的元素按在XML中的顺序依次显示。

    因为LinearLayout是根View,所以它的width和height应显示全屏,所以是match_parent。

    (2)       添加text field

    在LinearLayout内添加个Text Field,内容如下

     

    其中属性android: id可以独一无二的标记该EditText View

    当你试图在XML中引用任何resource对象,就需要使用At符号@,随后是resource类型(这里是id),反斜杠,再是resource名称(这里就相当于定义了一个变量edit_message,该变量指向一个resource文件(此时还未指向到哪个resource文件),以后要想使用该resource,就可以直接调用该变量)

    当你第一次定义一个resource id(这里是edit_message),需要在resource类型前加加号+符号,编译时SDK工具便会在gen/R.java中创建一个resource id(效果如下,相当于id.edit_message变量

    public static final class id {

              public static final int edit_message=0x7f080000;

    }

    )指向该EditText元素。

    一旦定义后,指向该引用的就不需要再使用加号符号

    android:layout_width和android:layout_height中的wrap_content指定它应该和View的内容大小保持一致,如果用match_parent,则EditText元素会全屏。

    android:hint用于当text field为空时默认应该显示的内容,这里不使用硬编码,而是@string/edit_message指向一个resource文件,因为还没有定义edit_message指向的resource,所以这里会有错误。

    如果这里添个加号,换成@+string/edit_message, 则会在R.java中string类会增加一个edit_message变量,相当于string.edit_message。

    (3)       添加string resource

    当需要在用户UI中显示内容,应该将该内容串申明为一个resource

    默认的这些string resource在res/values/strings.xml,添加一个edit_message变量,并设置为“Enter a Message”,同时再添加个button_send变量,值为“Send”,结果如下

     

    此时上面的错误消失

    (4)       添加一个Button

    在activity_main.xml中添加Button控件,如下

     

    这里不需要android:id因为下面activity将不引用,layout_width和layout_height设置为wrap_content,所以这个按钮将只有刚好能完全显示text内容的大小。这样设置完以后,效果就会如下图

     

    这里有个问题,就是Send按钮宽度不变,但EditText如果用户输入增多它应该变长,所以需要android:layout_weight来设置,这个属性默认都是0,它可以设置为任意大于0的值,它代表的这个控件与其兄弟元素的比例,比如说现在EditText设置为1,Send设置为2,则EditText宽度就是1/3,而Send就是2/3。

    将EditText修改如下

     

    这样EditText控件显示宽度就是1/1,而Send则是最小宽度,这里讲layout_width修改为0dp是为了提高效率,wrap_content是需要系统来计算组件的宽度,这样现在的效果就会如下

     

    (5)       连上手机,在eclipse点击 启动即可。

    1. 启动另一个活动

    本节将在用户点击Send按钮启动一个新的活动。

    打开activity_main.xml布局文件,在Button按钮添加android:onClick属性,设置android:onClick="sendMessage",其中sendMessage就是当用户点击Send时系统调用的方法。

    接下来在src/MainActivity.java中添加该方法,如下

     

    需要导入View类,eclipse中可以使用ctrl+shift+O快捷键导入。

    为了能正确被引用,该方法必须是:

    1)  必须是public

    2)  需要return a void value

    3)  有个View类作为唯一参数(这个View就是被点击的view)

    接下来构建一个Intent

    An Intent is an object that provides runtime binding between separate components (such as two activities).

    Intent表示“intent to do something”,通常用于启动另一个activity。

    在sendMessage方法内,创建一个Intent类用于启动一个叫DisplayMessageActivity的服务,Intent intent = new Intent(this, DisplayMessageActivity.class);

    构造函数有两个参数,Context类是第一个参数(这里this是因为这个Activity类是Context类的子类),第二个参数用于表示系统将该Intent传递给哪个组件(这里就是讲该Intent传递给DisplayMessageActivity.class)

    此时因为DisplayMessageActivity还不存在,所以暂时会报错。,效果如下

     

    Intent不仅可以启动另一个服务,还可以传递一些数据,在sendMessage方法内,我们将使用findViewById()来获取EditText元素并将其值添加到该Intent,如下

    Intent intent = new Intent(this, DisplayMessageActivity.class);

    EditText editText = (EditText) findViewById(R.id.edit_message);

    String message = editText.getText().toString();

    intent.putExtra(EXTRA_MESSAGE, message);

     

    Intent可以包含一组键-值对(key-value pairs)数据称为extras,putExtra()方法第一个参数是key,第二个参数是value。

    为了让第二个参数请求extra数据,需要使用一个public常量作为该Intent的extra的key,所以在MainActivity类开始添加一句

    public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";

    一般都会使用app的package名字来做前缀来定义intent的extra中的key。

    启动第二个活动

    为了启动一个活动,使用startActivity()方法并传递你的Intent,系统便会响应该请求然后启动Intent指定的Activity,这样MainActivity.java整个就应该如下

     

    下面创建DisplayMessageActivity类

    Eclipse中点击New – Android Activity,选择Blank Activity,如下

     

    点击Next,在下一页如下设置

     

    点击Finish结束。

    打开DisplayMessageActivity.java,可以发现已经存在onCreate()方法,onCreateOptionsMenu()方法,onOptionsItemSelected()方法。整个DisplayMessageActivity.java内容如下

     

     

    这里由于ActionBar API只有在HONEYCOMB版本以上,所以在使用getActionBar()方法之前会检查下当前的系统版本

    另外@SuppressLint("NewApi") tag to the onCreate() method to avoid lint errors.

    所以Activity子类都必须实现onCreate()方法,当系统创建一个该Activity实例就会调用该方法,同时在该方法内必须使用setContentView()定义该活动布局。

    添加标题(title string)

    在strings.xml文件添加如下一句(该eclipse已自动添加,无需手动添加)

     

    将该Activity添加到AndroidManifest.xml(同样eclipse中已自动添加,无需手动添加),如下

     

    接收Intent

    每个Activity都是由一个Intent激活,通过调研getIntent()方法可以得到Intent,所以需要在DisplayMessageActivity类中的onCreate()方法中添加如下

    Intent intent = getIntent();
    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

    显示接收到的消息

    为了显示消息,需要创建一个TextView,并通过setText()设置内容,然后通过setContentView()方法将TextView添加到该Activity布局的root view。这样,完整的onCreate()方法应该如下

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Get the message from the intent
        Intent intent = getIntent();
        String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

        // Create the text view
        TextView textView = new TextView(this);
        textView.setTextSize(40);
        textView.setText(message);

        // Set the text view as the activity layout
        setContentView(textView);
    }

     

    接下来点击运行启动,第一个Hello World的app到此为止

    注:此时接上机器运行的时候,报错The connection to adb is down, and a severe error has occurred,这个错误主要是由于主要是由于adb没法正常运行起来;而adb没法运行起来,主要是其端口被占用了;常见的,可能的占用adb端口的,是你当前电脑上和手机相关的管理软件,比如豌豆荚,91等,所以解决办法是:强制关闭再运行eclipse(我的是在任务管理器中终止了tadb进程后就ok了)。

  • 相关阅读:
    cf D. Vessels
    cf C. Hamburgers
    zoj 3758 Singles' Day
    zoj 3777 Problem Arrangement
    zoj 3778 Talented Chef
    hdu 5087 Revenge of LIS II
    zoj 3785 What day is that day?
    zoj 3787 Access System
    判断给定图是否存在合法拓扑排序
    树-堆结构练习——合并果子之哈夫曼树
  • 原文地址:https://www.cnblogs.com/abc123456789/p/3464813.html
Copyright © 2011-2022 走看看