android 实现简单功能,android实现一个简单的加法功能

右键layout目录new->Android XML File,取名为plus.xml,先使用最简单的线性布局(LinearLayout)

4c62f4874219c3765b4c94d506c2864f.png

然后加法需要2个输入的框框和一个提交按钮。

android:layout_width="match_parent" //布局的宽度,match_parent表示充满它的父控件,另外还有fill_parent和wrap_content(根据其内容改变宽度)

android:layout_height="match_parent"

android:orientation="vertical">//布局的方向,vertical:其内的控件垂直布局,horizontal:水平布局

android:id="@+id/num1"//@+id/ + id的格式是给控件指定一个id,这个id会在R.java自动生成,这样就可以在代码里按id找到这个控件了。

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:ems="10"//设置Edittext的宽度为10个字符的宽度

android:inputType="number">// 文本框输入的类型,这里选择number就只能输入数字了,其他还有好多类型,可以察看文档

//设置一个画面初始的焦点,一个文件只能有一个这个标签

/*原文档Any element representing aobject can include this empty element,which gives it's parent initial focus on the screen. You can have only one of these elements per file.*/

android:id="@+id/num2"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:ems="10"

android:inputType="number">

android:id="@+id/bPlus"//指定按钮的id

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_gravity="center"//gravity是重力的意思,这里就是对齐位置,layout_gravity是本控件相对父控件的对齐方式

android:gravity="center"//这是本控件内容相对控件的对齐方式

android:text="@string/plus"//这是控件的显示内容,可以直接写字符串如:android:text="相加"

//也可以想这么写@string/plus,说明是引用了string.xml里name为plus的常量,推荐这么写,方便维护

/>

fill_parent,match_parent,wrap_content三者区别可以看这里。

下面看一下string.xml

Plus

相加//上面的Button引用后显示的就是相加

结果

这里的值也会在R.java中生成相应的id,所以也可以在代码中直接按R.string.+ name引用到。

这样一个布局文件就写好了呢。

然后还要建一个result.xml的布局文件,这个文件非常简单,就是显示相加的结果。

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

android:id="@+id/tvResult"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:textIsSelectable="true"

android:textSize="50sp"

android:textColor="#FF0000"

android:gravity="center_vertical|center_horizontal"//这样写说明内容水平方向居中和垂直方向也居中

/>

唉,放了一个很大的错误,xml的注释不是这样的,我是在这里写的,习惯了代码的注释

下面就写第一个PlusActivity.java

packagelearn.plus;

importandroid.app.Activity;

importandroid.content.Intent;

importandroid.os.Bundle;

importandroid.view.View;

importandroid.view.View.OnClickListener;

importandroid.widget.Button;

importandroid.widget.EditText;

publicclassPlusActivityextendsActivity {

// 定义2个EditText和一个Button控件

privateEditText text1, text2;

privateButton bPlus;

@Override

protectedvoidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// 设置这个Activity的布局,直接使用R.layout.plus就可以设置了

setContentView(R.layout.plus);

// findViewById(id)这个id就是我们在布局文件里控件的id,然后需要强转成EditText

// 这样就可以去到3个控件的对象了

text1 = (EditText) findViewById(R.id.num1);

text2 = (EditText) findViewById(R.id.num2);

bPlus = (Button) findViewById(R.id.bPlus);

/*

* 这是给按钮设置监听onclick事件,和html中οnclick=“function()”类似

* BPlusClick()是一个内部类需要实现OnClickListener接口中的onClick(View v)方法。

* 不过也可以不定义这个内部类,可以采用匿名内部类的方式 bPlus.setOnClickListener(new

* OnClickListener() {

*

* @Override public void onClick(View v) {

*

* //do something

*

* } }); 这样写也是ok

* 这样就点击按钮的时候就会执行onClick方法了

*/

bPlus.setOnClickListener(newBPlusClick());

}

classBPlusClickimplementsOnClickListener {

@Override

publicvoidonClick(View v) {

/*

* new 一个Intent对象 源文档:An intent is an abstract description of an

* operation to be performed

* Intent就像是一个装满数据的卡车,从一个地方运到另一个地方,这些地方可以是Activity,service或者其他程序等等。

*/

Intent toResult = newIntent();

// 取得2个文本的值,相当于javascript中的document.getElementById('id').value

String str1 = text1.getText().toString();

String str2 = text2.getText().toString();

if((!"".equals(str1)) && (!"".equals(str2))) {

// Intent的方法,现在把它理解成是一个Map就好了,Map.put(key,value);

toResult.putExtra("num1", str1);

toResult.putExtra("num2", str2);

// 然后将2个Activity关联起来,PlusActivity.this表示当前Activity对象,和ResultActivity.class参数

toResult.setClass(PlusActivity.this, ResultActivity.class);

// 最后使用当前Activity对象的startActivity(Intent

// intent)方法打开ResultActivity

PlusActivity.this.startActivity(toResult);

}

}

}

}

6177d4b180eba310d9b86e69380d0335.png感觉挺清晰了呢。

下面是ResultActivity.java

packagelearn.plus;

importandroid.app.Activity;

importandroid.content.Intent;

importandroid.os.Bundle;

importandroid.widget.TextView;

publicclassResultActivityextendsActivity {

// 定义一个TextView

privateTextView tv;

@Override

protectedvoidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// 设置布局

setContentView(R.layout.result);

// getIntent()得到传过来的Intent对象

Intent fromPlusIntent = getIntent();

tv = (TextView) findViewById(R.id.tvResult);

// 根据key得到其中的value

String num1Str = fromPlusIntent.getStringExtra("num1");

String num2Str = fromPlusIntent.getStringExtra("num2");

String resultStr = "error";

try{

// parseInt出错的话就直接显示error

intnum1 = Integer.parseInt(num1Str);

intnum2 = Integer.parseInt(num2Str);

resultStr = num1 + num2 + "";

} catch(Exception e) {

} finally{

tv.setText(resultStr);

}

}

}

还有最重要的一步,就是要在AndroidManifest.xml中配置这2个Activity,要使用到Activity都需要在这个xml中配置过。

package="learn.plus"

android:versionCode="1"

android:versionName="1.0">

android:minSdkVersion="11"

android:targetSdkVersion="17"/>

android:allowBackup="true"

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme">

android:name="learn.plus.PlusActivity"

android:label="@string/app_name">

android:name="learn.plus.ResultActivity"

android:label="@string/result">

好了运行一下吧。

ef2d9b2c38b8487a0c4fb027a6e645ef.png

4176d2eb4ba1df15cae1020d0f5638ae.png

困死了睡觉

37.gif

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值