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

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

时间: 2024-10-26 20:54:59

Android控件介绍的相关文章

Android support library支持包常用控件介绍(二)

谷歌官方推出Material Design 设计理念已经有段时间了,为支持更方便的实现 Material Design设计效果,官方给出了Android support design library 支持库,让开发者更容易的实现材料设计的效果.顺便推荐官方的一个图标库:Material Icons 控件名称 NavigationView FloatingActionButton TextInputLayout Snackbar TabLayout AppBarLayout Coordinator

Android自定义控件1--自定义控件介绍

Android控件基本介绍 Android本身提供了很多控件比如我们常用的有文本控件TextView和EditText:按钮控件Button和ImageButton状态开关按钮ToggleButton单选复选按钮RadioButton和RadioGroup单选按钮和复选按钮CheckBox图片控件ImageView时钟控件AnalogClock和DigitalClock进度条ProgressBar和日期与时间选择控件DatePicker和TimePicker等. 文本控件TextView 和Ed

JCameraView 仿微信拍照Android控件(点击拍照,长按录小视频)

JCameraView 控件介绍 这是一个模仿微信拍照的Android开源控件,主要的功能有如下: 点击拍照. 前后摄像头的切换. 长按录视频(视频长度为10秒内). 长按录视频的时候,手指上滑可以放大视频. 录制完视频可以浏览并且重复播放. 可以设置小视频保存路径. 示例截图 GIF图略有卡顿 使用步骤 Android Studio 添加下列代码到project gradle allprojects { repositories { jcenter() maven { url 'https:/

Android 控件的触摸事件传递与处理

了解Android控件的触摸事件传递与处理对我们日常开发中自定义控件和触摸事件冲突解决有重大意义.Android控件的触摸事件传递和处理主要有以下几个方法,下面一一介绍. 一.与触摸事件有关的几个方法 boolean dispatchTouchEvent(MotionEvent ev);                                                                                               接收到触摸事件时,是否

Android 控件:使用下拉列表框--Spinner

---恢复内容开始--- 一.前段代码 <Spinner android:id="@+id/spin" android:paddingTop="10px" android:layout_width="fill_parent" android:layout_height="50sp"/> <Button android:id="@+id/addList" android:layout_wid

[Android控件]Dialogue大全

在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框,在我们使用Android的过程中,我归纳了一下,Android Dialog的类型无非也就7种,下面我分别向大家介绍这7种Android Dialog对话框的使用方法,希望对大家能有所帮助. 1.该效果是当按返回按钮时弹出一个提示,来确保无误操作,采用常见的对话框样式. 创建dialog对话框方法代码如下: protected void di

Android控件系列之RadioButton&amp;RadioGroup

学习目的: 1.掌握在Android中如何建立RadioGroup和RadioButton 2.掌握RadioGroup的常用属性 3.理解RadioButton和CheckBox的区别 4.掌握RadioGroup选中状态变换的事件(监听器) RadioButton和CheckBox的区别: 1.单个RadioButton在选中后,通过点击无法变为未选中 单个CheckBox在选中后,通过点击可以变为未选中 2.一组RadioButton,只能同时选中一个 一组CheckBox,能同时选中多个

Android控件系列之RadioButton&amp;RadioGroup 【转】

学习目的: 1.掌握在Android中如何建立RadioGroup和RadioButton 2.掌握RadioGroup的常用属性 3.理解RadioButton和CheckBox的区别 4.掌握RadioGroup选中状态变换的事件(监听器) RadioButton和CheckBox的区别: 1.单个RadioButton在选中后,通过点击无法变为未选中 单个CheckBox在选中后,通过点击可以变为未选中 2.一组RadioButton,只能同时选中一个 一组CheckBox,能同时选中多个

Android控件系列之RadioButton&amp;RadioGroup(转)

学习目的: 1.掌握在Android中如何建立RadioGroup和RadioButton 2.掌握RadioGroup的常用属性 3.理解RadioButton和CheckBox的区别 4.掌握RadioGroup选中状态变换的事件(监听器) RadioButton和CheckBox的区别: 1.单个RadioButton在选中后,通过点击无法变为未选中 单个CheckBox在选中后,通过点击可以变为未选中 2.一组RadioButton,只能同时选中一个 一组CheckBox,能同时选中多个