【Android】下拉列表、拖动条、星级评分条与标签文本的触摸事件

下拉列表、拖动条与星级评分条都是Android中的一些基本组件。

写一个小小的程序,来说明其用法。

如下图:

当下拉列表有值选定之后,则弹出相应的提示信息,哪个值被选择。星际评分条也一样,获取用户选择的星数。

标签文本被触摸则显示其被触摸。

滑动条,在拖动的时候,则在标签文本显示其值。因为,如果用弹出消息显示其滑动值,很不顺畅。

首先,把res\values\strings.xml,修改成如下代码:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">进度条及其他组件</string>
    <string name="action_settings">Settings</string>
    <string name="TextView1">下拉列表:</string>
    <string name="TextView2">拖动条:</string>
    <string name="TextView3">星级评分条:</string>
</resources>

之后,在res\values中新建一个array.xml文件,写入如下代码,这个文件是用来填充下拉列表的选项的:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string-array name="spinner1">
        <item>选项1</item>
        <item>选项2</item>
        <item>选项3</item>
    </string-array>

</resources>

然后,在res\layout\activity_main.xml中进行布局,布局思想如下:

因此activity_main.xml的代码如下,给要操作的组件赋予id:

<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="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/TextView1" />

        <Spinner
            android:id="@+id/spinner1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:entries="@array/spinner1" />
    </LinearLayout>

    <TextView
        android:id="@+id/TextView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/TextView2" />

    <SeekBar
        android:id="@+id/seekBar1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/TextView3" />

    <RatingBar
        android:id="@+id/ratingBar1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:numStars="5" />

</LinearLayout>

其中星级评分条的属性中numStars为最大星数。

之后在Mainactivity.java中给各个组件添加监听器:

package com.progresscomponent;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.RatingBar;
import android.widget.RatingBar.OnRatingBarChangeListener;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
	private Spinner spinner1;
	private TextView textView2;
	private SeekBar seekBar1;
	private RatingBar ratingBar1;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//获取各个组件
		spinner1=(Spinner)findViewById(R.id.spinner1);
		textView2 = (TextView) findViewById(R.id.TextView2);
		seekBar1=(SeekBar)findViewById(R.id.seekBar1);
		ratingBar1=(RatingBar)findViewById(R.id.ratingBar1);
		//下拉列表的改变的监听器
		spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {
			@Override
			public void onItemSelected(AdapterView<?> parent, View arg1,
					int pos, long arg3) {
				String result=parent.getItemAtPosition(pos).toString();
				Toast.makeText(MainActivity.this, "下拉列表被更改,"+result+"被选择",
						Toast.LENGTH_LONG).show();
			}
			@Override
			public void onNothingSelected(AdapterView<?> arg0) {
				// TODO Auto-generated method stub
			}
		});
		//标签文本被触摸的监听器
		textView2.setOnTouchListener(new OnTouchListener() {
			@Override
			public boolean onTouch(View arg0, MotionEvent arg1) {
				Toast.makeText(MainActivity.this, "“拖动条”这几个字被触摸!",
						Toast.LENGTH_LONG).show();
				return false;
			}
		});
		//滑动条被拖动的监听器
		seekBar1.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

			@Override
			public void onStopTrackingTouch(SeekBar arg0) {
				// TODO Auto-generated method stub

			}

			@Override
			public void onStartTrackingTouch(SeekBar arg0) {
				// TODO Auto-generated method stub

			}

			@Override
			public void onProgressChanged(SeekBar arg0, int result, boolean arg2) {
				// TODO Auto-generated method stub
				textView2.setText( "滑动条,当前值为:"+result);
			}
		});
		//星级评分条被打分的监听器
		ratingBar1.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {

			@Override
			public void onRatingChanged(RatingBar arg0, float result, boolean arg2) {
				Toast.makeText(MainActivity.this, "星级评分条被评分,值为:"+result,
						Toast.LENGTH_LONG).show();
			}
		});
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}
时间: 2024-10-10 12:52:52

【Android】下拉列表、拖动条、星级评分条与标签文本的触摸事件的相关文章

Android进度条(星级评分)使用详解(二)

一.SeekBar拖动条使用 SeekBar继承于ProgressBar,ProgressBar所支持的XML属性和方法完全适用于SeekBar.拖动条和进度条的区别是:进度条采用颜色填充来表明进度完成的程度,而拖动条则通过滑块位置来标识数值并且运行用户拖动滑块来改变值.因此,拖动条通常用于对系统的某种数值进行调节,比如调节音量.图片的透明度等. 1.拖动条效果 2.代码实现 功能:通过拖动滑块该动态改变图片的透明度 public class MainActivity extends Actio

UI组件之ProgressBar及其子类(二)SeekBar拖动条和RatingBar星级评分条的使用

拖动条采用拖动滑块的位置来表示数值 SeekBar的常用xml属性值: 重要的android:thumb制定一个Drawable对象,改变滑块外观 通过滑块来改变图片的透明度: main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" androi

Android View 之进度条+拖动条+星级评论条....

PS:将来的你会感谢现在奋斗的自己.... 学习内容: 1.进度条 2.拖动条 3.星级评论条 1.进度条...       进图条这东西想必大家是很熟悉的...为了使用户不会觉得应用程序死掉了,因此为之设置一个进度条使应用程序的运行状态更好的反馈给客户...这也就是进度条的作用...因此一般的应用程序都会加入进度条...进度条分为圆形进度条和线性的进度条...目的都是一样的,只是展示的效果是不同的...用代码讲解一下... <LinearLayout xmlns:android="htt

Android自定义控件系列 十:利用添加自定义布局来搞定触摸事件的分发,解决组合界面中特定控件响应特定方向的事件

这个例子是比较有用的,基本上可以说,写完这一次,以后很多情况下,直接拿过来addView一下,然后再addInterceptorView一下,就可以轻轻松松的达到组合界面中特定控件来响应特定方向的触摸事件了. 请尊重原创劳动成果,转载请注明出处:http://blog.csdn.net/cyp331203/article/details/45198549,非允许请勿用于商业或盈利用途,违者必究. 在写Android应用的过程之中,经常会遇到这样的情况:界面包含了多个控件,我们希望触摸在界面上的不

Android基础控件RatingBar星级评分条的使用

1.简介 RatingBar继承ProgressBar,除了ProgressBar的属性外还有特有属性: android:isIndicator:是否用作指示,用户无法更改,默认false android:numStars:显示多少个星星,必须为整数 android:rating:默认评分值,必须为浮点数 android:stepSize: 评分每次增加的值,必须为浮点数 OnRatingBarChangeListener //事件处理 2.简单使用 1)星条的drawable资源layer-l

Android中点击按钮获取星级评分条的评分

场景 效果 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 将布局改为LinearLayout,并通过android:orientation="vertical">设置为垂直布局,然后添加一个RatingBar,并通过 android:rating="5" 设置其星数为5 然后再添加一个Button,分别给他们添加Id. <?xml

星级评分进度条(RatingBar)

星级评分进度条(RatingBar):(主要用于评价等方面) 常用的xml属性; android:isIndicator:RatingBar是否是一个指示器(用户无法进行更改) android:numStars:显示的星星数量,必须是一个整型值,如“100”. android:rating:默认的评分,必须是浮点类型,像“1.2”. android:stepSize:评分的步长,必须是浮点类型,像“1.2”. 常用的方法: 监听方法:setOnRatingBarChangelistener 监听

Android ViewGroup触摸事件拦截详解

前言 在自定义ViewGroup中,有时候需要实现触摸事件拦截,比如ListView下拉刷新就是典型的触摸事件拦截的例子.触摸事件拦截就是在触摸事件被parent view拦截,而不会分发给其child,即使触摸发生在该child身上.被拦截的事件会转到parent view的onTouchEvent方法中进行处理.但是这个交互过程还是挺复杂的,有多种情况,今天我们就来分析一下吧.这篇分析文章已经放了一段时间了,如果有任何问题请高人指出. 触摸事件的分发 简单来说触摸事件的分发会经过这么几个顺序

android进度条、滑动条和评分控件

所谓进度条.滑动条和评分控件,在手机应用中,相信你见过加载游戏时.更新应用时等情况,屏幕出现一条进度栏,这里称之为进度条:当你调节音量时出现的这里即称作滑动条:而评分控件,当你在淘宝给卖家评价时出现的类似5星评价,这里即称作评分控件,下面将分别详细说明这三种控件的基础使用方法. 一.ProgressBar进度条控件 1. 首先ProgressBar进度条给出了两种样式,分别是progressBarStyleLarge和progressBarStyleHorizontal,此次主要以progres