【Android开发学习笔记】【第四课】基础控件的学习

  通过一个简单的例子来学习下面几种控件:

  1.TextView:简单的文本显示控件

  2.EditText:可以编辑的文本框

  3.Button:按钮

  4.Menu:这里指的是系统的Menu

  5.Toast:消息提示控件,类似于MFc的tip(不知道理解的对不对)

  顺便用到上一次学习的多个Activity之间传递数据的技术,来做一个小的计算乘法的case

  步骤:

  (1)主Activity 和显示结果的 Activity 都采用线性布局,下面是布局文件的源代码:  

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <EditText
        android:id="@+id/MyEdit1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
     />

    <TextView
        android:id="@+id/MyTest"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
     />

    <EditText
        android:id="@+id/MyEdit2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
     />

    <Button
        android:id="@+id/MyButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
     />

</LinearLayout>

  上面是主Activity的布局

<?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:id="@+id/MyRes"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
     /> 

</LinearLayout>

  上面是计算结果要用到的Activity

  (2)添加一个 计算结果处理 类 CalcActivity

    

  (3)处理 按钮按下消息,当按下按钮的时候,获取两个除数,然后用Intent传递给 处理结果的Activity,

      这里说一下,在初始化控件的使用,调用strings.xml中自己配置的字符串,这样便于以后国际化

    <string name="multipy">乘以</string>
    <string name="calc">计算</string> 

        //使用的时候
    mytest.setText(R.string.multipy);
    mybutton.setText(R.string.calc);

  (4)接收到除数之后,进行运算,输出结果,这个阶段只需要主要 String 和 int 直接的相互转化即可

        //接收两个乘数
        Intent intent = getIntent();
        String Snum1 = intent.getStringExtra("numone");
        String Snum2 = intent.getStringExtra("numtwo");

        int num1 = Integer.parseInt(Snum1);
        int num2 = Integer.parseInt(Snum2);

        int res = num1 * num2;

        // res + "" 解释:java中当+左右两边有一边是string类型,结果自动转化为string类型
        mytext.setText( res + "");

  (5)处理按下menu键的消息: 这里重写 boolean onCreateOptionsMenu(Menu menu) 即可

      点击右键,选择“Source”->“Override/implement ..” 然后选择这个函数,按下Menu键就会相应这个函数

  (6)当选择了菜单当中的某个选项之后,重写 boolean onOptionsItemSelected(MenuItem item) 函数就可以进行处理了

     end~

   运行结果看下:

  

  

   看下源码:里面必要部分注释会比较清楚

   (1)主的Activity (布局xml在上面已经贴出)

package com.example.controlview;

import android.app.Activity;
import android.app.ActionBar;
import android.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import android.os.Build;

public class MainActivity extends Activity
{

    private TextView mytest = null;
    private Button mybutton = null;
    private EditText myedit1 = null;
    private EditText myedit2 = null;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mytest = (TextView)findViewById(R.id.MyTest);
        mybutton = (Button)findViewById(R.id.MyButton);
        myedit1 = (EditText)findViewById(R.id.MyEdit1);
        myedit2 = (EditText)findViewById(R.id.MyEdit2);

        mytest.setText(R.string.multipy);
        mybutton.setText(R.string.calc);

        mybutton.setOnClickListener(new OnCalcListener());
    }

    class OnCalcListener implements OnClickListener
    {
        @Override
        public void onClick(View arg0)
        {
            // 得到两个除数
            String Num1 = myedit1.getText().toString();
            String Num2 = myedit2.getText().toString();

            // 传递两个数据
            Intent intent = new Intent();
            intent.putExtra("numone", Num1);
            intent.putExtra("numtwo", Num2);

            // 开始startActivity
            intent.setClass(MainActivity.this, CalcActivity.class);
            MainActivity.this.startActivity(intent);
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        menu.add(0, 1, 1, R.string.MyExit);
        menu.add(0, 2, 2, R.string.MyAbout);

        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        // 这里得到的 和 Menu::add 函数的第二个参数进行对应
        if (item.getItemId() == 1)
        {
            finish();
        }
        if (item.getItemId() == 2)
        {
            Toast.makeText(MainActivity.this, "code by carter",Toast.LENGTH_LONG ).show();
        }
        return super.onOptionsItemSelected(item);
    }

}

MainActivity.java

   (2)计算结果处理的Activity (布局xml在上面已经贴出)

package com.example.controlview;

import com.example.controlview.R;

import android.R.integer;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

public class CalcActivity extends Activity
{
    private TextView mytext = null;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.calc);

        mytext = (TextView)findViewById(R.id.MyRes);

        //接收两个乘数
        Intent intent = getIntent();
        String Snum1 = intent.getStringExtra("numone");
        String Snum2 = intent.getStringExtra("numtwo");

        int num1 = Integer.parseInt(Snum1);
        int num2 = Integer.parseInt(Snum2);

        int res = num1 * num2;

        // res + "" 解释:java中当+左右两边有一边是string类型,结果自动转化为string类型
        mytext.setText( res + "");

    }

}

CalcActivity.java

   (3)配置字符串的xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">ControlView</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>

    <string name="multipy">乘以</string>
    <string name="calc">计算</string>

    <string name="MyExit">退出</string>
    <string name="MyAbout">关于</string>   

</resources>

strings.xml

   (4)AndroidManifest.xml (注册新Activity的时候要用)

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.controlview"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="16"
        android:targetSdkVersion="19" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.controlview.MainActivity"
            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="com.example.controlview.CalcActivity"
            android:label="calc" >
        </activity>
    </application>

</manifest>

AndroidManifest.xml

  

【Android开发学习笔记】【第四课】基础控件的学习

时间: 2024-12-15 01:49:45

【Android开发学习笔记】【第四课】基础控件的学习的相关文章

android开发 软键盘出现后 防止EditText控件遮挡 整体平移UI

在EditText控件接近底部的情况下 软键盘弹出后会把获得焦点的EditText控件遮挡 无法看到输入信息 防止这样的情况发生 就需要设置AndroidManifest.xml的属性 前面的xml信息省略 在activity中 增加android:windowSoftInputMode="adjustPan" <activity ........................................................ android:windowSoft

Silverlight学习笔记(三):控件布局管理

简介: 学习Silverlight控件在页面上是如何进行布局,实现多种复杂布局 一.常见的三种布局方式 1. Silverlight学习笔记(三):控件布局管理,码迷,mamicode.com

Android开发技巧之使用weight属性实现控件的按比例分配空间

从今天开始,把看书时候的知识点整理成博客, 这个比较简单,估计有经验的都用过,weight属性 在做Android布局的时候,经常遇到需要几个控件按比例分配空间的情况 比如下图效果 在底部设置两个button,占据底部宽度一部分的同时,保持1:3的比例, 当然了,这么难看的布局用处不大,仅是用来说明weight的用法 布局代码如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" x

Android学习笔记(七)——常见控件

//此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! Android 给我们提供了大量的 UI控件,下面我们简单试试几种常用的控件. 一.TextView 在布局文件中加入TextView元素: 1 <TextView android:text="This is TextView!" 2 android:gravity="center" 3 android:layout_width="match_parent&qu

法语学习笔记--第四课(家庭)

第四课 La famille --------------您--------------------- vous 您,你们 是 être je suis    nous sommes tu es    vous êtes il est    ils sont elle est    elles sont ------------------------ 有 avoir je -> j'ai    nous avons tu as     vous aveg il a    ils ont ell

Excel开发学习笔记:界面交互与控件的布局

除了业务逻辑之外,比较耗时耗力的就是人机交互了.在编写excel定制程序的过程中,这次用到了以下几种交互方式: 通过excel工作表(worksheet)获取用户输入 通过按钮控件触发功能代码执行 通过TreeView控件显示内容摘要及导航 通过自定义的windows窗体提供交互 工作表的操作放到后面再说,讲一下按钮控件button和Treeview控件的布局. 放置控件的方法: 无非可视化放置和运行时代码加载两种.可视化放置比较直观,通过visual studio的toolbox工具栏拖动需要

C#学习笔记(20140910)-单选控件和单选组控件、复选控件、复选组控件

晚上学习了一下单选控件和单选组控件.复选控件.复选组控件. 稍微动了点脑筋,做了一个小小的网页程序.主要功能是相互赋值已经设置标签的字体大小和颜色已经前后背景色. 主要功能: 1. 在文本输入框中输入文字,提交后可以对标签赋值: 2. 选择单选框可以给标签赋值: 3. 选择单选组控件时可以给标签设置颜色: 4. 选择单选组控件时可以给字体设置大小. 最后的效果如下: 分块设置就不多说了,看看用到了哪些模块吧: 1. 自定义了一个方法,把标签的值赋值给输入框.使得输入框中的内容和标签的内容一致.

Android开发技巧——定制仿微信图片裁剪控件

拍照--裁剪,或者是选择图片--裁剪,是我们设置头像或上传图片时经常需要的一组操作.上篇讲了Camera的使用,这篇讲一下我对图片裁剪的实现. 背景 下面的需求都来自产品. 裁剪图片要像微信那样,拖动和放大的是图片,裁剪框不动. 裁剪框外的内容要有半透明黑色遮罩. 裁剪框下面要显示一行提示文字(这点我至今还是持保留意见的). 在Android中,裁剪图片的控件库还是挺多的,特别是github上比较流行的几个,都已经进化到比较稳定的阶段,但比较遗憾的是它们的裁剪过程是拖动或缩放裁剪框,于是只好自己

android开发 软键盘出现后 防止EditText控件遮挡 总体平移UI

在EditText控件接近底部的情况下 软键盘弹出后会把获得焦点的EditText控件遮挡 无法看到输入信息 防止这种情况发生 就须要设置AndroidManifest.xml的属性 前面的xml信息省略 在activity中 添加android:windowSoftInputMode="adjustPan" <activity ........................................................ android:windowSoftI