checkBox也是一个选择的键,这种按键不像RedioButton那样只能是单选,可以是多选的也可以是全都不选,可以用于对密码是否显示的选择键,也可以是爱好的多选按键。其最核心的地方在代码中的isChecked的判断,若被选中返回true,否则返回flase。下面有一个显示密码的代码:
在XML中:
<EditText
android:id="@+id/EditText_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
//默认是隐藏密码的
android:password="true"
/>
<CheckBox
android:id="@+id/checkbox_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="是否显示密码"
/>
在代码中:
mCheckBoxShowPassWord= (CheckBox) findViewById(R.id.checkbox_password);
mCheckBoxShowPassWord.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
mEditTextPassword.setTransformationMethod(null);
}else{
mEditTextPassword.setTransformationMethod(new PasswordTransformationMethod());
}
}
});
若被选中则显示密码,否则隐藏密码。
src是用来引入图片的例如:
android:src="@mipmap/piture"
background是用来设置ImageView的背景的,可以是填充颜色,也可以是图片作为背景。
scaletype相对来说比较复杂,但也不是很复杂。主要来设置图像的存放位置,
android:scaleType=”“,冒号中可以有fitStart,endStart,fitCebter,center,centerCrop等,从字面的意思也可以看出一些作用,其中centerCrop是不拉伸,充满窄边。
其在XML中设置主要用于给图片加一层蒙板,可以设置蒙版的颜色,使其变得更加美妙。例如:
android:tint="#55ff0000"
这就设置了一个透明度为55,颜色为红色的蒙板。
还可以通过按键在代码中调整图片的透明度。在XML中设置两个按键,如下图所示:
<Button
android:id="@+id/btn_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="增加透明度"
/>
<Button
android:id="@+id/btn_sub"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="减少透明度"
/>
在代码中。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.image);
mImageViewPicture= (ImageView) findViewById(R.id.imageView_two);
//可以用于改变ImageView中的图片。 mImageViewPicture.setImageResource(R.mipmap.zhaoliying);
mBtnadd= (Button) findViewById(R.id.btn_add);
mBtnSub= (Button) findViewById(R.id.btn_sub);
mBtnadd.setOnClickListener(this);
mBtnSub.setOnClickListener(this);
}
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)//版本号的声明
@Override
public void onClick(View v) {
int code = Build.VERSION.SDK_INT;//得到SDK的版版号
switch (v.getId()){
case R.id.btn_add:
alth+=5;
if(code<16){
mImageViewPicture.setAlpha(alth);
}else{
mImageViewPicture.setImageAlpha(alth);
}
break;
case R.id.btn_sub:
alth-=5;
if(code<16){
mImageViewPicture.setAlpha(alth);
}else{
mImageViewPicture.setImageAlpha(alth);
}
break;
}
}
这里由于版本问题做了一些判断。
mImageViewPicture.setImageResource(R.mipmap.zhaoliying);
用于对ImageView中的图片进行替换。
ListView是一种使数据一条条的显示的像一个空架子一样的东西。主要用于MVc设计模式中,M为数据,V为View及显示在界面中,C为controll控制M以什么样的形式显示在View中。
数据想放到ListView上必须经过适配器,将数据转化成规定的形式。
ListView常用的适配器有ArrayAdapter,simpleAdapter,自定义适配器。
这个数据会存在数组中。代码如下:
public class mListView extends Activity {
private ListView mListView;
String [] array ={"张三","李四","王五"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.nlist);
mListView= (ListView) findViewById(R.id.mListist);
// ArrayAdapter<String> adapter =new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,array);
ArrayAdapter<String> adapter =new ArrayAdapter<String>(this,R.layout.item_list,array);
mListView.setAdapter(adapter);
}
}
在XML中:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent">
<ListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/mListist" ></ListView>
</LinearLayout>
数据存放到了array数组中。
android.R.layout.simple_list_item_1是android自带的数据显示方式
通过mListView.setAdapter(adapter);将数据放到ListView中。
ArrayAdapter中存放的数据类型必须一样,这极大地限制了内容的丰富度。
SimpleAdapter的构造器中传输的数据必须是List类型的而且其中的内容为Map类型的。我们可以在Map中装入各种类型的数据。代码如下:
public class mListView extends Activity {
private ListView mListView;
ArrayList<Map<String,String >> mDate;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.item_list);
setContentView(R.layout.nlist);
mListView= (ListView) findViewById(R.id.mListist);
inidate();
SimpleAdapter eAdapter= new SimpleAdapter(this,mDate,R.layout.item_simpleview,new String[]{"name","age","sex","hobby"},
new int[]{R.id.name,R.id.age,R.id.sex,R.id.hobby} );
mListView.setAdapter(eAdapter);
//android.R.layout.simple_list_item_1是一种格式,这种格式是将数据放入ListView中的格式
// ArrayAdapter<String> adapter =new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,array);
}
public void inidate(){
mDate=new ArrayList<>();
HashMap<String,String> zhangsan=creatHashMap("张三","20","男","打球");
mDate.add(zhangsan);
HashMap<String,String> lisi=creatHashMap("李四","20","男","打球");
mDate.add(lisi);
HashMap<String,String> wangwu=creatHashMap("王五","20","男","打球");
mDate.add(wangwu);
}
public HashMap<String,String> creatHashMap(String name,String age,String sex,String hobby){
HashMap<String,String> hashMap = new HashMap<>();
hashMap.put("name",name);
hashMap.put("age",age);
hashMap.put("sex",sex);
hashMap.put("hobby",hobby);
return hashMap;
}
}
在item_simpleview的XML中:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" >
<TextView android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="name" />
<LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" >
<TextView android:id="@+id/age" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="age" />
<TextView android:id="@+id/sex" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="sex" />
</LinearLayout>
<TextView android:id="@+id/hobby" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="hobby" />
</LinearLayout>
我们这里还用ArrayList来承装数据,类型为Student类的对象。
自定义的Adapter是个java类来继承BaseAdapter。重写4个方法,
public int getCount() {
return mDate.size();
}方法是获得数据的个数。
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}这两方法获得数据的在List中的index。
最主要的方法是:public View getView(int position, View convertView, ViewGroup parent)
这个方法返回一个View,这个view是可以放到ListView中的被适配器设置好位置的。
代码如下:
在StudentAdapter中:
package com.example.administrator.test.mode;
import android.media.Image;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import com.example.administrator.test.R;
import com.example.administrator.test.example.Student;
import java.util.List;
/** * Created by Administrator on 2015/8/24. */
public class StudentAdapter extends BaseAdapter {
List<Student> mDate;
private LayoutInflater mflater;
public StudentAdapter(LayoutInflater inflater ,List<Student> data){
mflater=inflater;
mDate=data;
}
@Override
public int getCount() {
return mDate.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 =mflater.inflate(R.layout.item_simpleview,null);
Student student =mDate.get(position);
ImageView imageView= (ImageView) view.findViewById(R.id.image);
TextView textView_name= (TextView) view.findViewById(R.id.name);
TextView textView_age= (TextView) view.findViewById(R.id.age);
TextView textView_sex= (TextView) view.findViewById(R.id.sex);
TextView textView_hobby= (TextView) view.findViewById(R.id.hobby);
textView_name.setText(student.getName());
textView_sex.setText(student.getSex());
textView_age.setText(student.getAge());
textView_hobby.setText(student.getHobby());
imageView.setImageResource(student.getImage());
return view;
}
}
在Student类中:
package com.example.administrator.test.example;
/** * Created by Administrator on 2015/8/24. */
public class Student {
private String name;
private String age;
private String sex;
private String hobby;
private int image;
public Student(String name,String age,String sex,String hobby,int image){
this.name=name;
this.age=age;
this.sex=sex;
this.hobby=hobby;
this.image=image;
}
public void setImage(int image) {
this.image = image;
}
public int getImage() {
return image;
}
public void setAge(String age) {
this.age = age;
}
public void setSex(String sex) {
this.sex = sex;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public String getHobby() {
return hobby;
}
public String getSex() {
return sex;
}
public String getAge() {
return age;
}
}
在代码中:
public class mListView extends Activity {
private ListView mListView;
ArrayList<Student> mDate;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.item_list);
setContentView(R.layout.nlist);
mListView = (ListView) findViewById(R.id.mListist);
LayoutInflater inflater = getLayoutInflater();
indate();
StudentAdapter studentAdapter = new StudentAdapter(inflater, mDate);
mListView.setAdapter(studentAdapter);
}
private void indate() {
mDate=new ArrayList<>();
Student zhangsan=new Student("张三","20","女","打球",R.mipmap.zhaoliying);
Student lisi=new Student("李四","18","男","睡觉",R.mipmap.zhaolikun);
Student wangwu=new Student("王五","21","女","玩游戏",R.mipmap.baby);
mDate.add(zhangsan);
mDate.add(lisi);
mDate.add(wangwu);
}
}