移动开发技术(Android)——实验4 Android常用基本控件(二)

  • 一、实验目的
  • 二、实验内容
  • 1.单选按钮、复选框等控件
  • 2.ImageView和透明度


一、实验目的

  • 掌握图像视图、单选按钮、复选框控件的特点、类、所支持的常用XML属性及方法;
  • 掌握在XML布局文件中添加图像视图、单选按钮、复选框控件的语法格式;
  • 掌握获取单选按钮组选中项值、复选框选中项值的方法。

二、实验内容

1.单选按钮、复选框等控件

创建一个Android项目,项目名称为“shiyan0401_班级_×××(学生姓名)”,要求:

  • 界面构成:
    ①5个文本框用于显示提示信息“姓名:”、“年龄”、“专业”、“爱好”、“信息显示”;
    ②2个编辑框分别用于接收学生的姓名和年龄;
    ③3个单选按钮用于专业选择(计算机科学与技术、软件工程、网络工程);
    ④n个复选框用于爱好选择(n>=3); ⑤2个普通按钮,文本分别显示为“录入”、“重置”;
  • 程序功能:
    ①单击“录入”按钮,将用户输入和选择的各项信息在“信息显示”文本框中显示;
    ②单击“重置”按钮,清空用户输入的信息;
布局xml代码.................

<TableLayout 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:columnCount="3"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="姓名"
        android:textSize="20dp" />

    <EditText
        android:id="@+id/name_ET"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20dp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="年龄"
        android:textSize="20dp" />

    <EditText
        android:id="@+id/age_ET"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="15dp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="专业"
        android:textSize="15dp" />

    <RadioGroup android:id="@+id/RadioGroup1" >

        <RadioButton
            android:id="@+id/radio_IOT"
            android:text="物联网工程" />

        <RadioButton
            android:id="@+id/radio_jike"
            android:text="计算机科学与技术" />

        <RadioButton
            android:id="@+id/radio_ruanjian"
            android:text="软件工程" />
    </RadioGroup>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="爱好"
        android:textSize="20dp" />

    <TableRow android:id="@+id/CB_TR" >

        <CheckBox android:text="学习" />

        <CheckBox android:text="跑步" />

        <CheckBox android:text="看书" />

        <CheckBox android:text="音乐" />
    </TableRow>

    <TextView
        android:id="@+id/show"
        android:layout_width="wrap_content"
        android:layout_height="30dp"
        android:gravity="center_vertical|center_horizontal"
        android:text="信息显示区域" />

    <TableRow>
        <Button
            android:id="@+id/submit_BT"
            android:layout_weight="1"
            android:text="录入" />
        <Button
            android:id="@+id/reset_BT"
            android:layout_weight="1"
            android:text="重置" />
    </TableRow>

</TableLayout>
Java代码.................

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.TableRow;
import android.widget.TextView;

public class MainActivity extends Activity {

	TextView show;
	EditText name_ET,age_ET;
	RadioGroup dep ;
	CheckBox hobby_CB;
	TableRow CB_TR;

	String name,age;
	String department="";
	String hobby="";
	Button sb_BT,rs_BT;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		name_ET=(EditText) findViewById(R.id.name_ET);
		age_ET=(EditText) findViewById(R.id.age_ET);
		dep = (RadioGroup) findViewById(R.id.RadioGroup1);
		dep.setOnCheckedChangeListener(new OnCheckedChangeListener() {
			@Override
			public void onCheckedChanged(RadioGroup group, int checkedId) {
				// TODO Auto-generated method stub
				RadioButton r;
				if(checkedId!=-1){
					r = (RadioButton) findViewById(checkedId);
					department=r.getText().toString();
				}else{
					department="";
				}
			}
		});
		CB_TR=(TableRow) findViewById(R.id.CB_TR);
		sb_BT=(Button) findViewById(R.id.submit_BT);
		rs_BT=(Button) findViewById(R.id.reset_BT);
		show=(TextView) findViewById(R.id.show);
		sb_BT.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				hobby="";
				name=name_ET.getText().toString();
				age=age_ET.getText().toString();
				for(int i=0;i<CB_TR.getChildCount();i++){
					CheckBox c = (CheckBox) CB_TR.getChildAt(i);
					if(c.isChecked()){
						hobby+=c.getText().toString()+" ";
					}
				}
				show.setText(name+" "+age+" "+department+" "+hobby);
			}
		});
		rs_BT.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				name_ET.setText("");
				age_ET.setText("");
				dep.clearCheck();
				for(int i=0;i<CB_TR.getChildCount();i++){
					CheckBox c = (CheckBox) CB_TR.getChildAt(i);
					c.setChecked(false);
				}
				show.setText("");
			}
		});
	}


	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

2.ImageView和透明度

创建一个Android项目,项目名称为“shiyan0402_班级_×××(学生姓名)”,要求:

  • 界面构成:
    ①1个ImageView用于显示图片;
    ②4个按钮,文本分别显示为“下一张”、“上一张”、“透明度降低”、 “透明度增加”;
  • 程序功能:
    ①单击“下一张”按钮,ImageView中显示下一张图片;
    ②单击“上一张”按钮,ImageView中显示上一张图片;
    ③单击“透明度降低”按钮,ImageView中图片的透明度降低;
    ④单击“透明度增加”按钮,ImageView中图片的透明度增加。
首先需要在res文件夹下的drawable文件夹里存放几张图片
直接在eclipse中粘贴到drawable文件夹下即可(其他编译器同理)
图片不宜过大,几百KB为宜
根据分辨率不同drawable有好几个文件夹
由于我们不考虑不同分辨率场景下的情况
将图片放在任何一个drawable文件夹下即可
布局xml代码.................

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

    <ImageView
        android:id="@+id/IamgeView1"
        android:layout_width="wrap_content"
        android:layout_height="300dp"
        android:src="@drawable/image1" />

    <Button
        android:id="@+id/last"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="上一张" />

    <Button
        android:id="@+id/next"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="下一张" />

    <Button
        android:id="@+id/toumingdu_down"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="透明度-" />

    <Button
        android:id="@+id/toumingdu_up"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="透明度+" />

</TableLayout>
Java代码.................

import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends Activity {

	ImageView iv;
	Button last,next,tmd_up,tmd_down;
	int image[]={R.drawable.image1,
			R.drawable.image2,
			R.drawable.image3,
			R.drawable.image4};
	int currentImage=0;
	int current_al=255;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		iv=(ImageView) findViewById(R.id.IamgeView1);
		last=(Button) findViewById(R.id.last);
		next=(Button) findViewById(R.id.next);
		tmd_up=(Button) findViewById(R.id.toumingdu_up);
		tmd_down=(Button) findViewById(R.id.toumingdu_down);

		last.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				if(currentImage==0)
					currentImage=4;
				iv.setImageResource(image[--currentImage]);
			}
		});

		next.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				iv.setImageResource(image[++currentImage%image.length]);
			}
		});

		tmd_up.setOnClickListener(new OnClickListener() {

			@SuppressLint("NewApi")
			@SuppressWarnings("deprecation")
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				current_al=current_al-5;
				iv.setAlpha(current_al);
			}
		});
		tmd_down.setOnClickListener(new OnClickListener() {

			@SuppressLint("NewApi")
			@SuppressWarnings("deprecation")
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				current_al=current_al+5;
				iv.setAlpha(current_al);
			}
		});
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}
}