自学Android 02 活动

*活动:

一种可以包含用户界面的组件,主要用于和用户进行交互
一个程序可以包含零个或多个活动
 
*注意在新建项目后,要把其他项目关闭,避免发生错误
右键->close project 
技术分享
技术分享
 
*手动创建活动:
在src里,创建包,包名就用创建项目时候的默认包名
技术分享
然后,包右键->新建FirstActivity类(继承自Activity类)
技术分享
注意:项目中的任何活动都应该重写Activity类里的onCreate()方法
快捷方法:右键->source->override/implement method
技术分享

 
*创建和加载布局:
安卓是逻辑和视图分离的,最好每个活动对应一个布局。布局就是用来显示界面内容的。
手动创建布局:res->layout->new->Android xml flie
技术分享
 
技术分享

这个是adt提供的可视化布局编辑器
最下面有两个选卡:
graphical layout是可视化编辑方式,可以通过拖拽啊之类的很方便
.xml是通过代码了
技术分享

选择first_layout.xml选项卡
因为创建的时候选择的是linearlayout作为根元素,所以布局文件里已经有它了
技术分享
 
添加一个按钮:
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical" >
 6     
 7     <Button
 8         android:id="@+id/button_1"
 9         android:layout_width="match_parent" 
10         android:layout_height="wrap_content"
11         android:text="Button 1"
12         />
13 </LinearLayout>
android:id 是给当前元素定义的唯一标识。@+id/button_1(xml中定义语法) 和之前学的引用方法有点像:  @string /hello_world(xml中引用语法)
在XML中引用id使用:@id/id的名字
在XML中定义id使用:@+id/id的名字
android:layout_width="match_parent"  指定当前元素宽度,和父元素一样宽
android:layout_height="wrap_content"  指定当前元素高度,高度刚好可以包含内容即可
android:text 指定元素中显示的文字内容
 
回到graphical layout选项卡发现有按钮啦~
技术分享
然后我们需要 到活动里去加载这个布局 
先复习下之前的一个内容

我们可以看出如何引用res下的资源:
1. 在代码中 R.string.hello_world 来引用
2. 在XML中 @string /hello_world 来引用
当我们想引用图片就把string部分换成drawable,布局文件是layout......

package com.example.activitytest;
import android.app.Activity;
import android.os.Bundle;
public class FirstActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.first_layout);
    }
}
setContentView(R.layout.first_layout); 使用这一句来加载布局。
调用R.layout.first_layout获得布局文件的id,然后通过setContentView()方法给当前活动加载布局。
此处的R是,如下图:
技术分享
 
项目中添加的任何资源都会在R文件里生成对应的id。我们一般不去手动修改这个文件。
 
 
*在AndroidMainfest文件中注册
所有活动都要在AndroidMainfest文件中注册才能生效
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.activitytest"
    android:versionCode="1"
    android:versionName="1.0" >
    <uses-sdk
        android:minSdkVersion="15"
        android:targetSdkVersion="21" />
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".FirstActivity"
            android:label="This is FirstActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>
活动注册申明要放在<application>标签里面。
这里通过<activity>标签来进行活动的注册。
android:name=".FirstActivity"  来具体指定注册哪一个活动。.FirstActivity是com.example.activitytest.FirstActivity缩写(因为在mainfest标签中写明了是这个包所以可以缩写)
android:label="This is FirstActivity"  来指定活动中标题栏的内容,而且该内容会变成启动器中应用程序显示的名称
技术分享技术分享

<intent-filter>标签中的两句:
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER" />
两句话说明本活动被定义为程序的主活动;即点击图标后首先打开的活动。
(一个活动没声明任何一个活动作为主活动,这个程序任然可以正常安装,一般作为第三方服务供其它的应用在内部进行调用,如支付宝快捷支付)

复习下前面的知识:

技术分享

 

 
*隐藏标题栏:
package com.example.activitytest;
import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
public class FirstActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);  //这句一定要在setContentView前执行!!!否则会报错的
        setContentView(R.layout.first_layout);
    }
}

技术分享

安卓4.0加入了Action Bar,能对标题栏这个位置进行很多的操作。

 

 
*在活动里使用Toast:
toast是一种提醒方式,将短小的信息提示给用户,这些信息会在一段时间后消失。
技术分享
按下Button 1,然后弹出一个toast(注意需要导入多个包):
package com.example.activitytest;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.Toast;
public class FirstActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.first_layout);
        Button button1 = (Button) findViewById(R.id.button_1);
        button1.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Toast.makeText(FirstActivity.this, "u clicked button 1", Toast.LENGTH_SHORT).show();
            }
        });
    }
    
}
Button button1 = (Button) findViewById(R.id.button_1);   //获得按钮实例
通过 findViewById()方法获取布局文件中定义的元素,这里传入R.id.button_1,来获得按钮的实例。
findViewById()返回的是一个View对象,需要向下转型,强制转型。
button1.setOnClickListener(... ...); //为按钮注册了一个监听器,点击Button 1按钮,就会执行监听器里的onClick()方法。
setOnClickListener(OnClickListener I)方法 是android.view.View中的方法,android.widget.Button继承了它
技术分享
OnClickListener()是接口,里面有抽象方法onClick()
技术分享
抽象方法onClick()需要被执行,所以重写了
Toast.makeText(FirstActivity.this, "u clicked button 1", Toast.LENGTH_SHORT).show();
通过静态方法makeText()创建出一个Toast对象,然后再调用show()方法就可以显示了。(静态方法调用:类名.方法,实例方法调用:对象名.方法)
makeText(...)方法详解:
技术分享
 

以上是使用Toast的方法1,还有方法2:

package com.example.activitytest;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Toast;
public class FirstActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.first_layout);
    }
    public void selfDestruct(View view) {
        Toast.makeText(FirstActivity.this, "u clicked button 1", Toast.LENGTH_SHORT).show();
    }
}
 
//FirstActivity.java
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
    <Button
        android:id="@+id/button_1"
        android:layout_width="match_parent" 
        android:layout_height="wrap_content"
        android:text="Button 1"
        android:onClick="selfDestruct"
        />
</LinearLayout>
 
<!-- first_layout.xml -->

相关详细说明:

技术分享

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。