高仿快车100--实战RadioGroup和RadioButton应用

1.RadioButtonCheckBox的差别:

a.单个RadioButton在选中后,通过点击无法变为未选中

单个CheckBox在选中后。通过点击能够变为未选中

b.一组RadioButton,仅仅能同一时候选中一个

一组CheckBox,能同一时候选中多个

c.RadioButton在大部分UI框架中默认都以圆形表示

CheckBox在大部分UI框架中默认都以矩形表示

2.RadioButton和RadioGroup的关系:

a.RadioButton表示单个圆形单选框,而RadioGroup是能够容纳多个RadioButton的容器

b.每一个RadioGroup中的RadioButton同一时候仅仅能有一个被选中

c.不同的RadioGroup中的RadioButton互不相干,即假设组A中有一个选中了,组B中依旧能够有一个被选中

d.大部分场合下。一个RadioGroup中至少有2个RadioButton

e.大部分场合下。一个RadioGroup中的RadioButton默认会有一个被选中,并建议您将它放在RadioGroup中的起始位置

3.简介完后,先来看一下本应用中的效果图吧:

简单的一个弹出pop。然后里面提供了四种订单的状态,实现起来也不难,闲来看一下xml代码吧:

<?

xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/rl_order_parent"
    android:orientation="vertical" >

    <RelativeLayout
        android:id="@id/top_arrow"
        android:layout_width="fill_parent"
        android:layout_height="@dimen/height_title_bar" >

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:src="@drawable/btn_sort_arrow" />
    </RelativeLayout>

    <RadioGroup
        android:id="@+id/btn_sort"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/top_arrow"
        android:background="@drawable/btn_sort_bg"
        android:checkedButton="@id/btn_sort_unsigned"
        android:gravity="center"
        android:orientation="horizontal"
        android:padding="10.0dip" >

        <RadioButton
            android:id="@+id/btn_sort_all"
            android:layout_width="0.0dip"
            android:layout_height="wrap_content"
            android:layout_weight="1.0"
            android:background="#00000000"
            android:button="@null"
            android:clickable="true"
            android:drawableTop="@drawable/btn_sort_all_selector"
            android:gravity="center"
            android:scaleType="matrix"
            android:text="@string/btn_sort_all"
            android:textColor="@color/grey_878787" />

        <RadioButton
            android:id="@+id/btn_sort_unsigned"
            android:layout_width="0.0dip"
            android:layout_height="wrap_content"
            android:layout_weight="1.0"
            android:background="#00000000"
            android:button="@null"
            android:clickable="true"
            android:drawableTop="@drawable/btn_sort_unsigned_selector"
            android:gravity="center"
            android:scaleType="matrix"
            android:text="@string/btn_sort_unsigned"
            android:textColor="@color/blue_kuaidi100" />

        <RadioButton
            android:id="@+id/btn_sort_signed"
            android:layout_width="0.0dip"
            android:layout_height="wrap_content"
            android:layout_weight="1.0"
            android:background="#00000000"
            android:button="@null"
            android:clickable="true"
            android:drawableTop="@drawable/btn_sort_signed_selector"
            android:gravity="center"
            android:scaleType="matrix"
            android:text="@string/btn_sort_signed"
            android:textColor="@color/grey_878787" />

        <RadioButton
            android:id="@+id/btn_sort_recycle"
            android:layout_width="0.0dip"
            android:layout_height="wrap_content"
            android:layout_weight="1.0"
            android:background="#00000000"
            android:button="@null"
            android:clickable="true"
            android:drawableTop="@drawable/btn_sort_recycle_selector"
            android:gravity="center"
            android:scaleType="matrix"
            android:text="@string/btn_sort_recycle"
            android:textColor="@color/grey_878787" />
    </RadioGroup>

    <View
        android:id="@+id/btn_grey_view"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_below="@id/btn_sort"
        android:background="@color/black_7000" />

</RelativeLayout>

从xml布局文件里。看出使用了radiogroup,而且包括了四个radiobutton。这样便能够实现出那个弹出的popUpWindow.而且在RadioButton的图片中使用了状态选择器,分别在按下 选中和正常状态下。显示三种不同色值得图片。以一个为例。例如以下:

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

>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/btn_sort_signed_pressed" android:state_pressed="true"/>
    <item android:drawable="@drawable/btn_sort_signed_selected" android:state_checked="true"/>
    <item android:drawable="@drawable/btn_sort_signed_normal"/>

</selector>

java代码例如以下。代码里都有凝视,目測能够看明确:

/**
	 * 显示签收状态的pop
	 */
	private void showOrderStatusPop() {
		if (orderStatusPopView == null) {
			orderStatusPopView = View.inflate(mContext, R.layout.pop_bill_sort,
					null);
		}
		initOrderStatusPopView();
		setCurrentCheckedItem();
		setOrderStatusPopViewListener();
		if (orderStatusPopupWindow == null) {
			orderStatusPopupWindow = new PopupWindow(orderStatusPopView,
					LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
			// 使其不聚集
			orderStatusPopupWindow.setFocusable(false);
			// 设置同意在外点击消失
			orderStatusPopupWindow.setOutsideTouchable(true);
			// 这个是为了点击“返回Back”也能使其消失,而且并不会影响你的背景
			orderStatusPopupWindow.setBackgroundDrawable(new BitmapDrawable());
		}
		int i = DensityUtil.dip2px(mContext, 60.0f);
		iv_arrow.setImageResource(R.drawable.arrow_up_float);
		orderStatusPopupWindow.showAsDropDown(top, 0, -i);
	}

	/**
	 * 初始化订单状态控件
	 */
	private void initOrderStatusPopView() {
		rl_order_parent = (RelativeLayout) orderStatusPopView
				.findViewById(R.id.rl_order_parent);
		btn_sort = (RadioGroup) orderStatusPopView.findViewById(R.id.btn_sort);
		btn_sort_all = (RadioButton) orderStatusPopView
				.findViewById(R.id.btn_sort_all);
		btn_sort_unsigned = (RadioButton) orderStatusPopView
				.findViewById(R.id.btn_sort_unsigned);
		btn_sort_signed = (RadioButton) orderStatusPopView
				.findViewById(R.id.btn_sort_signed);
		btn_sort_recycle = (RadioButton) orderStatusPopView
				.findViewById(R.id.btn_sort_recycle);

	}

	/**
	 * 设置订单状态的监听
	 */
	private void setOrderStatusPopViewListener() {
		rl_order_parent.setOnClickListener(this);
		btn_sort_all.setOnClickListener(this);
		btn_sort_unsigned.setOnClickListener(this);
		btn_sort_signed.setOnClickListener(this);
		btn_sort_recycle.setOnClickListener(this);
		//给radioGroup设置选中变化的监听,便于检測当前选中了哪个,方便下次再次显示回显
		btn_sort.setOnCheckedChangeListener(new OnCheckedChangeListener() {

			@Override
			public void onCheckedChanged(RadioGroup group, int checkedId) {
				switch (checkedId) {
				case R.id.btn_sort_all:
					currentCheckedId = checkedId;
					break;
				case R.id.btn_sort_unsigned:
					currentCheckedId = checkedId;
					break;
				case R.id.btn_sort_signed:
					currentCheckedId = checkedId;
					break;
				case R.id.btn_sort_recycle:
					currentCheckedId = checkedId;
					break;
				}

			}
		});
		btn_sort.check(currentCheckedId);
	}

	/**
	 * 设置当前显示的状态
	 */
	private void setCurrentCheckedItem() {
		switch (currentCheckedId) {
		case R.id.btn_sort_all:
			resetTextColor();
			btn_sort_all.setTextColor(mContext.getResources().getColor(
					R.color.blue_kuaidi100));
			break;
		case R.id.btn_sort_unsigned:
			resetTextColor();
			btn_sort_unsigned.setTextColor(mContext.getResources().getColor(
					R.color.blue_kuaidi100));
			break;
		case R.id.btn_sort_signed:
			resetTextColor();
			btn_sort_signed.setTextColor(mContext.getResources().getColor(
					R.color.blue_kuaidi100));
			break;
		case R.id.btn_sort_recycle:
			resetTextColor();
			btn_sort_recycle.setTextColor(mContext.getResources().getColor(
					R.color.blue_kuaidi100));
			break;
		}

	}

	/**
	 * 重置文字颜色
	 */
	private void resetTextColor() {
		btn_sort_all.setTextColor(mContext.getResources().getColor(
				R.color.grey_878787));
		btn_sort_unsigned.setTextColor(mContext.getResources().getColor(
				R.color.grey_878787));
		btn_sort_signed.setTextColor(mContext.getResources().getColor(
				R.color.grey_878787));
		btn_sort_recycle.setTextColor(mContext.getResources().getColor(
				R.color.grey_878787));

	}

此,我们实现了popPOP和radioGroup radioButton的组合。事实上,在实际应用。使用底部RadioGroup这些应用程序有很多,类似,知识这个小介绍这一点上。

时间: 2024-10-11 09:26:57

高仿快车100--实战RadioGroup和RadioButton应用的相关文章

高仿拉手网底部菜单实现FragmentActivity+Fragment+RadioGroup

先把欢迎页和引导页的代码上传了http://download.csdn.net/detail/u013134391/7183787不要积分的. 底部菜单栏实现在4.0以前都是用tabhost,现在基本都被fargmentActivity加RadioGroup替代.下面实现底部菜单同样是用后者实现. 先声明一组四个的RadioButton的RadioGroup的单选按钮组,然后呢对比拉手网我们就发现样子太不一样了,我们的还有一个单选按钮的样式,这个我们写RadioButton的android:bu

Android ActionBar应用实战,高仿微信主界面的设计

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/26365683 经过前面两篇文章的学习,我想大家对ActionBar都已经有一个相对较为深刻的理解了.唯一欠缺的是,前面我们都只是学习了理论知识而已,虽然知识点已经掌握了,但是真正投入到项目实战当中时会不会掉链子还很难说.那么不用担心,本篇文章我就将带领大家一起进入ActionBar的应用实战,将理论和实践完美结合到一起. 如果你还没有看过我的前两篇文章,建议先去阅读一下 Andr

【第二版】高仿Android网易云音乐企业级项目实战课程介绍

这是一门付费Android项目课程,我们只做付费课程:同时也感谢大家的支持. 这一节,对本课程做一个简单介绍,以及放一些项目效果图,如果想直接查看项目视频演示,可以直接在腾讯课堂查看[高仿Android网易云音乐企业级项目实战]课程第三节,让大家对该项目有一个整体的认识. 1 前言 我们课程学完都不能让你,年薪百万,出任CEO,走上人生巅峰. 2 课程简介 这是一门使用Java语言,从0开发一个Android平台,接近企业级的项目(我的云音乐). 课程包含了基础内容,高级内容,项目封装,项目重构

Android——今日头条APP——高仿——ZYFNewsCTZF

Android--今日头条APP--高仿--ZYFNewsCTZF 图片效果:1 主页代码:MainActivity:     1.首页代码:SyFragment:             1.新闻频道代码:             2.新闻内容代码:              跳转--显示新闻详细内容              适配器--NewsBaseAdapter-NewsFragmentAdapter              entity--MyNews     2.我的代码:MyFr

Android 高仿微信头像截取 打造不一样的自定义控件

转载请表明出处:http://blog.csdn.net/lmj623565791/article/details/39761281,本文出自:[张鸿洋的博客] 1.概述 前面已经写了关于检测手势识别的文章,如果不了解可以参考:Android 手势检测实战 打造支持缩放平移的图片预览效果(下).首先本篇文章,将对之前博客的ZoomImageView代码进行些许的修改与改善,然后用到我们的本篇博客中去,实现仿微信的头像截取功能,当然了,个人觉得微信的截取头像功能貌似做得不太好,本篇博客准备去其糟粕

Android 高仿微信头像截取 打造不一样的自己定义控件

转载请表明出处:http://blog.csdn.net/lmj623565791/article/details/39761281,本文出自:[张鸿洋的博客] 1.概述 前面已经写了关于检測手势识别的文章.假设不了解能够參考:Android 手势检測实战 打造支持缩放平移的图片预览效果(下).首先本篇文章,将对之前博客的ZoomImageView代码进行些许的改动与改善,然后用到我们的本篇博客中去,实现仿微信的头像截取功能.当然了.个人觉得微信的截取头像功能貌似做得不太好.本篇博客准备去其糟粕

莆田鞋高仿的程度你了解多少!

也许你觉得莆田高仿鞋不好,也许你不接受高仿鞋,也许你觉得莆田就是垃圾货,都随你,今天小编要站出来为莆田说上几句话! 希望大家不要用有色眼镜去看待莆田,小编先说说我个人的几点看法: ①我们的态度很重要. 你有钱你可以去买正品,我买高仿鞋可能是我没钱,也可能这就是我的爱好,大家进井水不犯河水,买正品就比买仿鞋的牛逼么? 我就说说我近两年的消费者的变化吧,我现在很多顾客朋友,以前都是花着大把的钞票去专柜买鞋,还有几个朋友经常性排队买鞋,花重金找黄牛找代购找鞋买鞋,后来认识了我之后,在我这里买过之后,现

安卓开发复习笔记——Fragment+ViewPager组件(高仿微信界面)

什么是ViewPager? 关于ViewPager的介绍和使用,在之前我写过一篇相关的文章<安卓开发复习笔记——ViewPager组件(仿微信引导界面)>,不清楚的朋友可以看看,这里就不再重复. 什么是Fragment? Fragment是Android3.0后新增的概念,Fragment名为碎片,不过却和Activity十分相似,具有自己的生命周期,它是用来描述一些行为或一部分用户界面在一个Activity中,我们可以合并多个Fragment在一个单独的activity中建立多个UI面板,或

C#编写记事本(高仿)

近一周写的关于记事本的代码,高仿记事本.本人C#入门不久,其中存在代码冗余,但懒得修改了. 经测试运行正常. 一.主窗体设计及代码 1 namespace BestEditor 2 { 3 public partial class Main : Form 4 { 5 private bool isTextChanged; 6 private string path;//记录文件路径(刚新建的文件路径为"",打开的文件路径为原路径) 7 8 public Main() 9 { 10 In