常用的基本控件

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);    }}

运行结果:

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()方法
运行结果:

当我们点击第二个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);    }}

运行结果:

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

更多相关文章

  1. android兼容oppo手机刘海屏解决方案
  2. Android开发——控件基础(三)EditText组件以及简单的登录界面
  3. Android(安卓)CalendarView非常用属性全解析
  4. Android之系统自带的文字外观设置及实际显示效果图
  5. android输入限制
  6. Android用户界面 UI组件--AdapterView及其子类(二) AdapterViewA
  7. Android软键盘显示模式及打开和关闭方式
  8. Android用户界面 UI组件--ImageView及其子类ImageButton,QuickCo
  9. android中的Selector的用法---主要是改变ListView和Button控件的

随机推荐

  1. 《Android Security Internals》第一章安
  2. Android 9.0设置系统语言
  3. ADB无法找到Android设备
  4. Building Two Versions of the Same Andr
  5. LinearLayout 内部 挂件 居中
  6. Android——新手指引 指定View高光显示自
  7. Android 上层应用读写底层设备节点(Andro
  8. Android—— 4.2 Vold挂载管理_CommandLi
  9. 2010 Linux Journal读者选择奖揭晓
  10. 使用Android拨打电话功能