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了)。

  • 相关阅读:
    程序启动冲出UAC解决Win UAC问题的编程经验
    代码服务器端Tornado实现聊天室功能(websocket)
    选中菜单android中的显示跳转和隐式跳转
    提交优化Oracle Tuning Log File Sync 等待事件的几种策略
    对象类Effective Java:Ch3_Methods:Item11_谨慎重写clone()
    视频教程视频Java+PHP+.NET海量教程来了 500G教程
    应用性能Intel MIC适合什么样的应用程序
    资源页面dwr的ajax实现
    登录用户Eclipse中SVN访问用户的变更办法
    内存释放[置顶] Cocos2dx 内存管理心得
  • 原文地址:https://www.cnblogs.com/abc123456789/p/3464813.html
Copyright © 2011-2022 走看看