常用的基本控件

CheckBox

CheckBox是android复选框控件,每一个CheckBox都是独立的,都要有自己的id。
常用的属性与上一篇中博客写的RadioButton基本相同。

ImageView

常用的属性

android:src 设置要展示的图片(图片不会被拉伸)
android:background 设置背景图片(图片会被拉伸)
android:alpha 设置展示图片的透明度
android:tint 将图片渲染成指定的颜色
android:scaleType=”matrix” 用矩阵来绘图
android:scaleType=”fitXY” 不按比例拉伸图片来填充view的长宽
android:scaleType=”fitStart” 按比例拉伸图片,拉伸后图片的宽度为View的宽度,且显示在View的左边
android:scaleType=”fitCenter” 按比例拉伸图片,拉伸后图片的宽度为View的宽度,且显示在View的中间
android:scaleType=”fitEnd” 按比例拉伸图片,拉伸后图片的宽度为View的宽度,且显示在View的右边
android:scaleType=”center” 按原图大小显示图片,但图片长宽大于View的长宽时,截图图片中间部分显示
android:scaleType=”centerCrop” 按 按比例扩大图片的size居中显示,使得图片长或宽等于或大于View的长或宽
android:scaleType=”centerInside” 将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长或宽等于或小于View的长或宽
注意以上属性都可以在代码中用方法实现

代码示例

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" >    <LinearLayout  android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" >        <TextView  android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="爱好" />        <CheckBox  android:id="@+id/check_basketball" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="篮球" />        <CheckBox  android:id="@+id/check_football" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="足球" />        <CheckBox  android:id="@+id/check_swim" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="游泳" />    </LinearLayout>    <Button android:id="@+id/button_register" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="提交注册"/>    <LinearLayout  android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" >        <EditText  android:id="@+id/edittext_password" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="2" android:hint="请输入密码" android:inputType="textPassword" />        <CheckBox  android:id="@+id/check_isshow" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="显示密码" />    </LinearLayout>    <ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/boygirl" android:background="@drawable/weimei" android:scaleType="center"/>  <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal">      <Button android:id="@+id/button_add" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="增加透明度"/>      <Button android:id="@+id/button_minus" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="减小透明度"/>  </LinearLayout></LinearLayout>

MainActivity.java

import java.util.ArrayList;import android.os.Build;import android.os.Bundle;import android.text.method.HideReturnsTransformationMethod;import android.text.method.PasswordTransformationMethod;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.CheckBox;import android.widget.CompoundButton;import android.widget.CompoundButton.OnCheckedChangeListener;import android.widget.EditText;import android.widget.ImageView;import android.annotation.TargetApi;import android.app.Activity;public class MainActivity extends Activity implements OnClickListener {    private CheckBox checkIsshow;    private EditText edittext;    private Button button_register;    private CheckBox checkBasketball;    private CheckBox checkFootball;    private CheckBox checkSwim;    private Button btn_add;    private Button btn_minus;    private ImageView image;    private int alpha;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        checkBasketball = (CheckBox) findViewById(R.id.check_basketball);        checkFootball = (CheckBox) findViewById(R.id.check_football);        checkSwim = (CheckBox) findViewById(R.id.check_swim);        button_register = (Button) findViewById(R.id.button_register);        btn_add = (Button) findViewById(R.id.button_add);        btn_add.setOnClickListener(this);           btn_minus = (Button) findViewById(R.id.button_minus);        btn_minus.setOnClickListener(this);        image = (ImageView) findViewById(R.id.image);        button_register.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View arg0) {                ArrayList<String> list = new ArrayList<String>();                if (checkBasketball.isChecked()) {                    list.add("篮球");                }                if (checkFootball.isChecked()) {                    list.add("足球");                }                if (checkSwim.isChecked()) {                    list.add("游泳");                }                for (String hobby : list) {                    Log.d("hobby", "我的兴趣爱好为:" + hobby);                }            }        });        edittext = (EditText) findViewById(R.id.edittext_password);        checkIsshow = (CheckBox) findViewById(R.id.check_isshow);        checkIsshow.setOnCheckedChangeListener(new OnCheckedChangeListener() {            @Override            public void onCheckedChanged(CompoundButton arg0, boolean arg1) {                if (arg1) {                    edittext.setTransformationMethod(HideReturnsTransformationMethod.getInstance());//如果勾选则显示密码                } else {                    edittext.setTransformationMethod(PasswordTransformationMethod.getInstance());//如果没有勾选则不显示密码                }            }        });    }    @TargetApi(Build.VERSION_CODES.JELLY_BEAN)     @Override    public void onClick(View arg0) {        //得到当前SDK的版本号        int versionCode = android.os.Build.VERSION.SDK_INT;        if (arg0.getId() == R.id.button_add) {            alpha += 5;            if (versionCode < 16) {                image.setAlpha(alpha);//此方法已被淘汰,被下边方法代替            } else {                image.setImageAlpha(alpha);//当前SDK版本太低,不支持此方法,在此前加上@TargetApi(Build.VERSION_CODES.JELLY_BEAN)             }        }        if (arg0.getId() == R.id.button_minus) {            alpha += 5;            if (versionCode < 16) {                image.setAlpha(alpha);            } else {                image.setImageAlpha(alpha);            }        }    }}

运行结果:

勾选篮球,游泳,打印结果

勾选显示密码,则显示密码,不勾选则不显示。
点击增加透明度,图片透明显示

ListView

ListView可以称得Android中最常用的控件之一,几乎所有的应用程序都要用到它。ListView允许用户通过手指上下滑动的方式将屏幕外的数据滚动到屏幕内,同时屏幕上原有的数据则会滚动出屏幕。

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

ListView的简单用法

因为ListView是用于展示数据的,数据是无法直接传递给ListView,所以我们需要借助适配器来完成。下面简单介绍两种适配器的实现类ArrayAdapter和SimpleAdapter的用法。

ArrayAdapter

常用于简单的显示一个文本,它可以通过泛型指定要适配的数据类型,然后在构造方法中把适配的数据传入即可。

mport java.util.ArrayList;import android.os.Bundle;import android.widget.ArrayAdapter;import android.widget.ListView;import android.widget.Toast;import android.app.Activity;public class MainActivity extends Activity {    private ListView listView;    private String[] array = { "张三", "李四", "王五"};    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        listView = (ListView) findViewById(R.id.listview);        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, array);        //也可以自定义新建android.R.layout.simple_list_item_1中的xml代码        listView.setAdapter(arrayAdapter);    }}

运行结果:
Android的常用基本控件ImageView、ListView_第1张图片

SimpleAdapter

可以放多个文本,我们需要自己定义一个要布局的格式:

<?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:layout_margin="15dp" android:orientation="horizontal" >      <TextView  android:id="@+id/textview_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="姓名" />    <LinearLayout  android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="10dp" android:orientation="vertical" >        <TextView  android:id="@+id/textview_age" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="年龄" />        <TextView  android:id="@+id/textview_sex" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="性别" />    </LinearLayout>    <TextView  android:id="@+id/textview_hobby" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="10dp" android:text="爱好" /></LinearLayout>

MainActivity.java

import java.util.ArrayList;import java.util.HashMap;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.Toast;import android.app.Activity;public class MainActivity extends Activity {    private ListView listView;    private ArrayList<HashMap<String, String>> arraylist;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        listView = (ListView) findViewById(R.id.listview);        arraylist=new ArrayList<HashMap<String,String>>();        HashMap<String , String> zhangsan=createHashMap("张三", "18", "男", "打篮球");        arraylist.add(zhangsan);        HashMap<String , String> lisi=createHashMap("李四", "19", "女", "游泳");        arraylist.add(lisi);        HashMap<String , String> wangwu=createHashMap("王五", "20", "男", "睡觉");        arraylist.add(wangwu);        SimpleAdapter simpleAdapter=new SimpleAdapter(this, arraylist, R.layout.simpleadapter_layout, new String[]{"name","age","sex","hobby"}, new int[]{R.id.textview_name,R.id.textview_age,R.id.textview_sex,R.id.textview_hobby});        listView.setAdapter(simpleAdapter);        listView.setOnItemClickListener(new OnItemClickListener() {            @Override            public void onItemClick(AdapterView<?> parent, View view, int position,long id) {                HashMap<String, String> data = arraylist.get(position);                Toast.makeText(MainActivity.this,"姓名:"+data.get("name")+" 年龄:"+data.get("age")+" 性别:"+data.get("sex")+" 爱好:"+data.get("hobby"), Toast.LENGTH_SHORT).show();            }        });    }    private HashMap<String, String> createHashMap(String name,String age,String sex,String hobby){        HashMap<String, String> person = new HashMap<String, String>();        person.put("name", name);        person.put("age", age);        person.put("sex", sex);        person.put("hobby", hobby);        return person;    }}

注意:AdapterView不允许使用setOnClickListener()方法
运行结果:
Android的常用基本控件ImageView、ListView_第2张图片
当我们点击第二个list时,短暂显示点击内容

自定义Adapter

首先我们在之前的布局中姓名标签的前边加入一个imageview。

<ImageView android:id="@+id/imageview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher"/>

定义一个实体类Student

public class Stuent {    private String name;    private String age;    private String sex;    private String hobby;    private int image;    public Stuent(String name,String age,String sex,String hobby,int image){        this.age=age;        this.name=name;        this.hobby=hobby;        this.sex=sex;        this.image=image;    }    public int getImage() {        return image;    }    public void setImage(int image) {        this.image = image;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getAge() {        return age;    }    public void setAge(String age) {        this.age = age;    }    public String getSex() {        return sex;    }    public void setSex(String sex) {        this.sex = sex;    }    public String getHobby() {        return hobby;    }    public void setHobby(String hobby) {        this.hobby = hobby;    }}

自定义一个适配器StudentAdapter

import java.util.ArrayList;import com.lingzhuo.mywidget4.R;import model.Stuent;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;public class StudentAdapter extends BaseAdapter{    private ArrayList<Stuent> arraylist;    private LayoutInflater inflater;    //将inflater和数据传递到适配器中    public StudentAdapter(LayoutInflater inflater,ArrayList<Stuent> arraylist){        this.inflater=inflater;        this.arraylist=arraylist;    }    @Override    public int getCount() {        //得到listview将要显示的数据的条数        return arraylist.size();    }    @Override    public Object getItem(int position) {        //返回索引        return position;    }    @Override    public long getItemId(int position) {        //返回索引        return position;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        //加载我们自定义的布局        View view = inflater.inflate(R.layout.simpleadapter_layout, null);        //获得当前项的实例        Stuent student = arraylist.get(position);        ImageView image=(ImageView) view.findViewById(R.id.imageview);        TextView textview_name=(TextView) view.findViewById(R.id.textview_name);        TextView textview_age=(TextView) view.findViewById(R.id.textview_age);        TextView textview_sex=(TextView) view.findViewById(R.id.textview_sex);        TextView textview_hobby=(TextView) view.findViewById(R.id.textview_hobby);        textview_name.setText(student.getName());        textview_age.setText(student.getAge());        textview_sex.setText(student.getSex());        textview_hobby.setText(student.getHobby());        image.setImageResource(student.getImage());        return view;    }}

MainActivity.java

import java.util.ArrayList;import java.util.HashMap;import model.Stuent;import adapter.StudentAdapter;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ArrayAdapter;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.Toast;import android.app.Activity;public class MainActivity extends Activity {    private ListView listView;    private ArrayList<Stuent> list;    private LayoutInflater inflater;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        listView = (ListView) findViewById(R.id.listview);        inflater=getLayoutInflater();        list =new ArrayList<Stuent>();        Stuent zhangsan=new Stuent("张三", "18", "男", "打篮球",R.drawable.ic_launcher);        list.add(zhangsan);        Stuent lisi=new Stuent("李四", "19", "女", "游泳",R.drawable.ic_launcher);        list.add(lisi);        Stuent wangwu=new Stuent("王五", "20", "男", "睡觉",R.drawable.ic_launcher);        list.add(wangwu);        StudentAdapter studentAdapter=new StudentAdapter(inflater, list);        listView.setAdapter(studentAdapter);    }}

运行结果:
Android的常用基本控件ImageView、ListView_第3张图片

至此,我们只需修改xml中的内容,就能定制出各种复杂的界面了!!!

更多相关文章

  1. Android 控件(button)对齐方法实现详解
  2. Android常见布局控件之LinearLayout和TableLayout
  3. Android开发——控件基础(三)EditText组件以及简单的登录界面
  4. Android项目打包、Eclipse视图和UI控件
  5. 说说 Android 的常见 UI 控件
  6. Android基础控件使用指南

随机推荐

  1. android -- 蓝牙 bluetooth (一) 入门
  2. Android(安卓)关于嵌套listView时onItemC
  3. Android中通过typeface设置字体
  4. ( 转)关于Android的nodpi,xhdpi,hdpi,mdp
  5. android notification
  6. [React Native Android(安卓)安利系列]原
  7. Android导入工程提示 Invalid project de
  8. Android(安卓)项目结构图
  9. [Android]生成heap dump文件(.hprof)
  10. Android的布局和Intent笔记和常用实例