Android的常用基本控件ImageView、ListView
2015-08-24 21:04
639 查看
领卓教育培训第四十二天
常用的属性与上一篇中博客写的RadioButton基本相同。
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的长或宽
注意:以上属性都可以在代码中用方法实现。
MainActivity.java
运行结果:
勾选篮球,游泳,打印结果
勾选显示密码,则显示密码,不勾选则不显示。
点击增加透明度,图片透明显示
运行结果:
MainActivity.java
注意:AdapterView不允许使用setOnClickListener()方法。
运行结果:
当我们点击第二个list时,短暂显示点击内容
定义一个实体类Student
自定义一个适配器StudentAdapter
MainActivity.java
运行结果:
至此,我们只需修改xml中的内容,就能定制出各种复杂的界面了!!!
常用的基本控件
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[code]<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
[code]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允许用户通过手指上下滑动的方式将屏幕外的数据滚动到屏幕内,同时屏幕上原有的数据则会滚动出屏幕。[code]<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
常用于简单的显示一个文本,它可以通过泛型指定要适配的数据类型,然后在构造方法中把适配的数据传入即可。[code]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
可以放多个文本,我们需要自己定义一个要布局的格式:[code]<?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
[code]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。[code]<ImageView android:id="@+id/imageview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher"/>
定义一个实体类Student
[code]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
[code]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
[code]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中的内容,就能定制出各种复杂的界面了!!!
相关文章推荐
- Android的控件CheckBox、ImageView以及ListView的自定义Adapter用法
- Gradle学习笔记
- android下使用graphview做图形显示界面
- 在AndroidStudio不能找到so文件问题:couldn't find libweibosdkcore.so
- Android控件之ImageView
- Android发展的一个重要方面Makefile分析
- Android Studio不能打开外来的项目:使用Gradle重建项目
- android listView 间距
- android 串口扩展(wk2xxx)移植
- Android大图加载优化--基于LRU算法的本地文件缓存
- Android:adb端口被占用
- Android学习
- Android透明顶栏(沉浸式)在android4.4上的实现
- 2015/8/24/checkBox/imageView/ArrayAdapter/SimpleAdapter/自定义Adapter
- Android第四讲——常用的基本控件(一)TextView、EditText、Button、RadioButton、CheckButton、ImageView
- Android开发学习笔记:Intent的简介以及属性的详解
- android学习 关于用intent 传递数据
- Android中IntentService的原理及使用
- Android应用打破65K方法数限制
- 关于Android ViewPager的实现