今天我们要讲的是关于Activity的一些简单用法,上一篇的博文已经讲过了关于它的生命周期。能成为四大核心组件之一,它的重要性不言而喻。如果你新建一个Project,你就会发现这个新的工程已经自带了一个Myactivity.java(名称可能不同)。对于用户而言,Activity就是面对的程序的全部。对于开发者而言,Activity的好坏直接关系着一个应用的用户体验。话不多说,直接进入正题。
我们在新建的Project中新建一个类,这里我们命名为Aty1。因为我们是刚刚开始学,所以我打算讲的细一点,我在刚开始会具体操作写出来,如果你已经会了,可以跳过这些具体的操作:
今天我们要讲的是关于Activity的一些简单用法,上一篇的博文已经讲过了关于它的生命周期。能成为四大核心组件之一,它的重要性不言而喻。如果你新建一个Project,你就会发现这个新的工程已经自带了一个Myactivity.java(名称可能不同)。对于用户而言,Activity就是面对的程序的全部。对于开发者而言,Activity的好坏直接关系着一个应用的用户体验。话不多说,直接进入正题。
新建类的操作是,在侧边栏中右击图中的红框,选择new,再选择新建Java class,然后输入Aty1就可以了。
然后我们进入Aty1,如果此时发现它没有继承Activity方法,那么我们就键入extends Activity。
我们先放一下Aty1,新建一个XML文件,用于设计界面。同上面的操作,在侧边栏中右击红框,选择new,再选择Layout resource file,键入aty1就可以了。
将开头和结尾的AbsoluteLayout改成LinearLayout,这样布局就成了线性分布,以后我们会讲到。同时添加android:orientation="vertical",成为垂直线性布局,向布局中添加一个TextView和Button组件。具体代码如下:
<?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">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Aty1"
android:id="@+id/tvOut" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Stop Aty1"
android:id="@+id/btnClose"
android:layout_gravity="center_vertical"
android:checked="false" />
</LinearLayout>
其中的android:id="@id+/xxx"为每一个组件定义一个ID,这样在该Project中的其他文件中访问这个组件的时候,就有标记了,下面会用到。
回到Aty1,创建private变量,Button变量和TextView变量。在Aty1中新建onCreate方法,这是Activity中必要的方法,用以实现动作。Aty1的具体代码如下:
package chennuo.com.active;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
/**
* Created by chennuo on 2014/10/14.
*/
public class Aty1 extends Activity {
private Button btnClose;
private TextView tvOut;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.aty1);
btnClose = (Button) findViewById(R.id.btnClose);
btnClose.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent();
i.putExtra("result","Hello MainActivity");
setResult(0,i);
finish();
}
});
tvOut = (TextView) findViewById(R.id.tvOut);
Bundle date = getIntent().getExtras();
String txt = date.getString("txt");
tvOut.setText(txt);
}
}
下面分析一下其中的一些代码:
setContentView(R.layout.aty1);
将aty1.xml用于变现Aty1.java的内容,layout即是集中了该Project所有XML文件的文件夹。
btnClose = (Button) findViewById(R.id.btnClose);
<pre name="code" class="html" style="font-size: 14px;"> tvOut = (TextView) findViewById(R.id.tvOut);
findViewById()即是上面所说的以aty1.xml中的组件的ID来绑定创建的Button和TextView变量。()中的是强制类型转换。
<pre name="code" class="html" style="font-size: 14px;">btnClose.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent();
i.putExtra("result","Hello MainActivity");
setResult(0,i);
finish();
}
})
该方法用于为Button设定OnClickListener方法,其中再定义一个OnClick()就是按按钮时发生的动作。这里只是为了说明Activity的用法,所以有些具体的方法就不说了。上面所说的是Aty1的代码,而不是刚刚进去的时候那个界面的代码。也许你觉得这有点乱,不过,这样才比较有逻辑性。
下面我们来说一下主Activity的代码,还是和上面一样,我们下来看一下变现它的XML代码,这个XML文件名为activity_my。具体代码如下:
<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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MyActivity">
<TextView
android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tvOut" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Start Aty1"
android:id="@+id/btnStartAty1"
android:layout_alignParentStart="true"
android:layout_marginTop="46dp"
android:checked="false" />
</RelativeLayout>
这里用的是RelativeLayout布局,即相对布局。当创建一个组件之后,即会和已存在的组件形成相对位置,当你移动已存在的组件时,新添加的组件也会移动。添加一个Button和TextView组件,用以进入Aty1。
下面我们来说一下主Activity的代码,具体代码如下:
package chennuo.com.active;
import android.app.Activity;
import android.content.Intent;
import android.content.SyncStatusObserver;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.TextView;
public class MyActivity extends Activity {
private Button btnStartAty1;
private TextView tvOut;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
tvOut = (TextView) findViewById(R.id.tvOut);
btnStartAty1 = (Button)findViewById(R.id.btnStartAty1);
btnStartAty1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(MyActivity.this,Aty1.class);
// i.putExtra("txt","Hello Aty1");
Bundle date = new Bundle();
date.putString("txt","Hello Aty1");
i.putExtras(date);
// startActivity( i );
startActivityForResult(i,0);
}
});
System.out.println("onCreate");
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
String result = data.getStringExtra("result");
tvOut.setText(result);
super.onActivityResult(requestCode, resultCode, data);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.my, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
你可以学着用之前对Aty1的分析来分析这个主Activity。
为了能使用除了主Activity之外的Activity,我们需要进入AndroidManifest.xml文件去创建一个activity标签:
<span style="font-size:14px;"><span style="white-space:pre"> </span><activity android:name="Aty1"></activity></span>
具体代码如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="chennuo.com.active" >
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MyActivity"
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 android:name="Aty1"></activity>
</application>
</manifest>
我会和你们一直一起努力地走下去!小菜鸟的成长之路!