当前位置: 代码迷 >> Android >> Android控件引见
  详细解决方案

Android控件引见

热度:29   发布时间:2016-04-27 23:52:24.0
Android控件介绍

Android控件介绍

多选按钮(CheckBox)

CheckBox有两个常用的事件,OnClickListener事件和OnClickChangeListener事件

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    >    <CheckBox        android:id="@+id/eat_checkBox"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="Eat"/>    <CheckBox        android:id="@+id/sleep_checkBox"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_below="@+id/eat_checkBox"        android:text="Sleep"/></RelativeLayout>

效果如下:

这里写图片描述

代码:

package com.example.z1178.test;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.CheckBox;import android.widget.CompoundButton;public class MainActivity extends Activity {    private static final String TAG="debug";    private CheckBox eat_checkBox;    private CheckBox sleep_checkBox;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.linear_layout);        eat_checkBox=(CheckBox)findViewById(R.id.eat_checkBox);        sleep_checkBox=(CheckBox)findViewById(R.id.sleep_checkBox);        OnCheckBoxClickListener  listener1=new OnCheckBoxClickListener();        CompoundButton.OnCheckedChangeListener listener2=new OnCheckedChangeListener();        //绑定点击事件        eat_checkBox.setOnClickListener(listener1);        sleep_checkBox.setOnClickListener(listener1);        //绑定状态改变事件        eat_checkBox.setOnCheckedChangeListener(listener2);        sleep_checkBox.setOnCheckedChangeListener(listener2);    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.menu_main, menu);        return true;    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        // Handle action bar item clicks here. The action bar will        // automatically handle clicks on the Home/Up button, so long        // as you specify a parent activity in AndroidManifest.xml.        int id = item.getItemId();        //noinspection SimplifiableIfStatement        if (id == R.id.action_settings) {            return true;        }        return super.onOptionsItemSelected(item);    }    class OnCheckBoxClickListener implements View.OnClickListener{        @Override        public void onClick(View v) {            CheckBox box=(CheckBox)v;            int id=v.getId();            switch (id){                case R.id.eat_checkBox:Log.d(TAG,"eat_checkBox is clicked!:" + box.isChecked());break;                case R.id.sleep_checkBox:Log.d(TAG, "sleep_checkBox is clicked:" + box.isChecked());break;            }        }    }    class OnCheckedChangeListener implements CompoundButton.OnCheckedChangeListener{        @Override        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {            CheckBox box=(CheckBox)buttonView;            Log.d(TAG,box.getText()+" checkBox changed ,its statue is "+isChecked);        }    }}

若要在界面上增加全选按钮,则先在xml中增加相应的控件,然后在代码中获取该对象,然后绑定OnClickChangeListener事件,关键代码如下:

  @Override        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {            CheckBox box=(CheckBox)buttonView;            int id=box.getId();            if(id!=R.id.checkall_checkBox){                Log.d(TAG,box.getText()+" checkBox changed ,its statue is "+isChecked);            }else{                    eat_checkBox.setChecked(isChecked);                    sleep_checkBox.setChecked(isChecked);            }        }

单选按钮(RadioButton)

单选按钮有RadioButton和RadioGroup,其事件与CheckBox一样,也有OnClickListener事件和OnClickChangeListener事件,不再赘述。

ImageView

配置控件:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    >    <ImageView        android:layout_width="wrap_content"        android:id="@+id/imageView"        android:layout_height="wrap_content"        android:src="@drawable/layout_image"        /></RelativeLayout>

我们也可以通过在代码中设置图片

imageView.setImageResource(R.drawable.layout_image);

imageView为ImageView对象,R.drawable.layout_image为drawable中的图片

ScaleType

ScaleType可以控制图片的相关属性,其属性如下:

属性
CENTER
CENTER_CROP
CENTER_INSIDE
FIT_CENTER(START,END)
FITXY
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    >    <ImageView        android:id="@+id/imageView1"        android:layout_width="100dp"        android:layout_height="100dp"        android:background="#ff0000"        android:scaleType="fitCenter"        android:src="@drawable/layout_image"        />    <ImageView        android:id="@+id/imageView2"        android:layout_width="100dp"        android:layout_height="100dp"        android:src="@drawable/beauty"        android:background="#0000ff"        android:scaleType="fitCenter"        android:layout_below="@+id/imageView1"        /></RelativeLayout>

效果如图:

这里写图片描述

其中,我们设置了图片的width和height为100dp,scaleType为fitCenter,同时设置了背景色,图片会按照width和height等比例缩放,不够的地方背景色填充。

若其中一个的scaleType为fitStart时,效果如下:

这里写图片描述

scaleType为center时:

这里写图片描述

此时图片大于规定的尺寸,则进行裁剪,小于规定尺寸的则居中显示,注意此时无背景色了。

scaleType为centerInside时:

这里写图片描述

centerInside与centerFit的区别是,当图片过大时,两者没有区别,但是当图片小于规定尺寸时,centerFit会进行放大以适应尺寸,而centerInside不会这样做,只是放在中央。

scaleType为centerCrop时:

这里写图片描述

centerCrop为图片的短边于尺寸短边按比例缩放,长边过长则截取掉,因此其是没有背景色的。

当然,我们也可以在代码中实现图片的缩放。

imageView.setScaleType(ScaleType.CENTER);

其参数为枚举类型。

TimePicker和DatePicker

TimePicker和DatePicker均有OnTimeChangedListener事件。

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    >    <TimePicker        android:id="@+id/timePicker"        android:layout_width="wrap_content"        android:layout_height="wrap_content">    </TimePicker>    <DatePicker        android:id="@+id/datePicker"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_below="@+id/timePicker"        >    </DatePicker></RelativeLayout>
package com.example.z1178.test;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.Menu;import android.view.MenuItem;import android.widget.TimePicker;public class MainActivity extends Activity {    private static final String TAG="debug";    private TimePicker timePicker;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.linear_layout);        timePicker=(TimePicker)findViewById(R.id.timePicker);        timePicker.setIs24HourView(true);        //设置监听器和绑定事件        timePickerChangedListener listener=new timePickerChangedListener();        timePicker.setOnTimeChangedListener(listener);    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.menu_main, menu);        return true;    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        // Handle action bar item clicks here. The action bar will        // automatically handle clicks on the Home/Up button, so long        // as you specify a parent activity in AndroidManifest.xml.        int id = item.getItemId();        //noinspection SimplifiableIfStatement        if (id == R.id.action_settings) {            return true;        }        return super.onOptionsItemSelected(item);    }    class timePickerChangedListener implements TimePicker.OnTimeChangedListener{        @Override        public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {            Log.d(TAG,hourOfDay+":"+minute);        }    }}

默认情况下,时间显示的是当前系统时间,我们可以在代码中设置时间,还有,我们可以通过页面上的按钮设置监听器来获得时间。注意,月份是从0开始的 。

AnalogClock和DigitalClock这里就不介绍了。

ProgressBar,SeekBar和RatingBar

ProgressBar的属性:

属性1 属性2 方法
水平风格 (Horizontal) 判断是否是圆形进度条(isIndeterminated) 最大进度(max)
小风格 (Samll) 增加进度(incrementProgressBy) 当前进度(progress)
大风格 (Large ) 增加第二进度(incrementSecondProgressBy) 第二进度(secondProgress)
反向风格 (Large.Inverse)
大反向风格 (Inverse)
小反向风格 (Samll.Inverse)

SeekBar的监听事件

事件
onProgressChanged(SeekBar seekBar,int progress,boolean fromUser)
onStartTrackingTouch(SeekBar seekBar)
onStopTrackingTouch(SeekBar seekBar)

RatingBar的属性:

属性 事件
星星个数(numStars) onRatingBarChanged(RatingBar ratingBar,float rating,boolean fromUser)
当前等级(progress)
stepSize

版权声明:本文为博主原创文章,未经博主允许不得转载。

  相关解决方案