仿QQ切换按钮,纯代码实现,告别图片

如何实现点击按钮实现QQ在线联系客服聊天 随着网络发展的需求,很多地方都需要用到在线QQ联系客服,很轻松便捷。那么如何实现该功能呢? 其实很简单:将下面一段代码添加到你自己需要放置的代码位置就可以实现该操作: http://wpa.qq.com/msgrd?v=1&uin=QQ号码&site=qq&menu=yes"> 注意:中间的图片标签 如果不需要有图片展示,则可以直接去除,则: http://wpa.qq.com/m 阅读详情

这个是我很久以前实现的了,当时记录到我有道云笔记里面,翻阅笔记的时候,发现了这个东西的存在,打算分享给大家,可能对大家来说已经不是什么新鲜货了,但是可以帮助新学的了解一下android xml相关的知识。

首先我来看两张效果图:
这里写图片描述

这里写图片描述

看到这两张图片,可能对于很多新学Android的同学来说,第一时间想到的可能就是RadioGroup里面包裹两个RadioButton按钮,然后分别设置其背景图片。因为当时我接手的几个残缺项目(别人没有做完就跑了)大概都是这样实现的。因为这样的原因,我才觉得其实xml+RadioGroup完全可以实现同样的效果(当然还有其他很多方式哈)。

第一步,我们先分析下这个界面,虽然很简单,但是还是有值得注意的地方。

(1)整个RadioGroup的背景是白色的,选中的时候RadioButton的背景是黄色,字体颜色为白色

(2)当未选中的时候背景为白色,字体颜色为黄色

(3)最外面的RadioGroup的弧度和RadioButton的弧度保持一致

(4)里面RadioButton与RadioGroup之间存在一定的距离

第二步,通过上面简单的分析,我们大体在心中知道了应该怎么样做了吧,现在我们就来简单的实现一下,

首先书写我们的布局:RadioGroup包裹两个RadioButton按钮

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#ff6d00" >

        <RadioGroup
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:layout_margin="5dp"
            android:background="#ffffff"
            android:orientation="horizontal" >

            <RadioButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

            <RadioButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </RadioGroup>
    </RelativeLayout>

</LinearLayout>

通过以上简单的代码,我们可以实现以下的效果:

这里写图片描述

是不是很丑?没事后面我会详细的一步一步的讲解,

1.我们先来实现RadioGroup的弧度,
在res->drawable下新建shape_radiogroup_bg.xml,写入以下代码:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

    <!-- 设置弧度 -->

    <corners android:radius="100dp" />
    <!-- 设置颜色 -->
    <solid android:color="#ffffff" />

</shape>

然后将 RadioGroup的android:background=”#ffffff”,这个属性

修改成android:background=”@drawable/shape_radiogroup_bg”

即,引用我们刚刚写好的shape_radiogroup_bg.xml

2.现在我需要对RadioButton做一些手脚了在我们的res->values下新建style_radiobutton_left.xml,style_radiobutton_right.xml ,写入以下代码:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">

    <style name="radiobutton_left">
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">40dp</item>
        <item name="android:layout_marginLeft">2dp</item>
        <item name="android:layout_marginRight">0dp</item>
        <item name="android:layout_marginTop">2dp</item>
        <item name="android:layout_marginBottom">2dp</item>
        <item name="android:gravity">center</item>
        <item name="android:button">@null</item>
        <item name="android:textSize">18sp</item>
        <item name="android:width">70dp</item>
    </style>

</resources>
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">

    <style name="radiobutton_right">
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">40dp</item>
        <item name="android:layout_marginLeft">0dp</item>
        <item name="android:layout_marginRight">2dp</item>
        <item name="android:layout_marginTop">2dp</item>
        <item name="android:layout_marginBottom">2dp</item>
        <item name="android:gravity">center</item>
        <item name="android:button">@null</item>
        <item name="android:textSize">18sp</item>
        <item name="android:width">70dp</item>
    </style>

</resources>

然后分别在RadioButton去引用这个两个xml, style=”@style/radiobutton_left”,style=”@style/radiobutton_left”。现在的效果图为:
这里写图片描述
接下来,我们就需要给每一个RadioButton去选中和未选中的背景颜色,在我们的res->drawable下分别新建以下xml:

/res/drawable/selector_radiobutton_bg_left.xml
/res/drawable/selector_radiobutton_bg_right.xml
/res/drawable/shape_radiobutton_left_.xml
/res/drawable/shape_radiobutton_left.xml
/res/drawable/shape_radiobutton_right_.xml
/res/drawable/shape_radiobutton_right.xml

一共六个,是不是有点多?其实很多都是一样的,
代码分别为:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/shape_radiobutton_left" android:state_checked="true"></item>
    <item android:drawable="@drawable/shape_radiobutton_left_" android:state_checked="false"></item>
</selector>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/shape_radiobutton_right" android:state_checked="true"></item>
    <item android:drawable="@drawable/shape_radiobutton_right_" android:state_checked="false"></item>
</selector>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

    <!-- 填充的颜色 -->
    <solid android:color="#ffffff" />
    <!-- 设置按钮的四个角为弧形 -->
    <!-- android:radius 弧形的半径 -->
    <corners android:radius="100dip" />

</shape>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

    <!-- 填充的颜色 -->
    <solid android:color="#Ff6d00" />
    <!-- 设置按钮的四个角为弧形 -->
    <!-- android:radius 弧形的半径 -->
    <corners android:bottomLeftRadius="20dp" android:bottomRightRadius="0dp" android:topLeftRadius="20dp" android:topRightRadius="0dp" />

</shape>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

    <!-- 填充的颜色 -->
    <solid android:color="#ffffff" />
    <!-- 设置按钮的四个角为弧形 -->
    <!-- android:radius 弧形的半径 -->
    <corners android:radius="100dip" />

</shape>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

    <!-- 填充的颜色 -->
    <solid android:color="#Ff6d00" />
    <!-- 设置按钮的四个角为弧形 -->
    <!-- android:radius 弧形的半径 -->
    <corners android:bottomLeftRadius="0dp" android:bottomRightRadius="20dp" android:topLeftRadius="0dp" android:topRightRadius="20dp" />

</shape>

然后分别在RadioButton去引用这个两个xml,

android:background=”@drawable/selector_radiobutton_bg_left”,

android:background=”@drawable/selector_radiobutton_bg_right”

之后便是给我们的文字设置颜色了,新建:/res/drawable/radiobutton_text_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">


    <item android:state_checked="false" android:color="#ff6d00"></item>  
    <item android:state_checked="true" android:color="#ffffff"></item>  
</selector>

之后使用android:textColor=”@drawable/radiobutton_text_selector” 引用我们的radiobutton_text_selector.xml文件,到此,就完成了所有的代码了。小伙伴赶快也试一试吧。

自定义仿QQ点击左右切换 不错的demo喜欢的同学可以拿去。积分下载靠大家了 立即下载

相关推荐

Android开发之浅仿QQ聊天UI和键盘控制

系统输入法弹出方式.当输入内容时输入框被系统键盘遮挡了,影响了用户操作体验,这就是开发中非常常见的软键盘遮挡的问题,该如何解决?下码来看吧

Android——腾讯QQ的Tab按钮动画效果完美实现

最近在用QQ的时候发现了一个有意思的小细节,如图所示: 可以看到Tab按钮都有一个随着用户拖动而转动的特效,一开始被这个效果惊艳到了,QQ还是很细致的,注重细节和用户体验。 于是利用空闲时间实现了这个效果,所有代码均用kotlin实现,项目效果如图所示: 哈哈是不是一模一样呢,完整的实现代码并不长,只有200多行,但是找思路花了一些时间,也遇到过许多弯路,不过最后都还是坚持下

化身孤岛的瓜 8009

仿qqTab左右切换选项卡

仿qqtab选项卡

循序渐进实现仿QQ界面(四):圆形按钮与工具栏自绘

这一篇本来应该演示如何实现仿QQ界面的中间客户区与底部工具栏,不过在实现底部工具栏的时候发现圆形按钮与工具栏自绘有不少取巧的方法,因此加插这么一篇,讲解一下如何实现圆形按钮和工具栏自绘。 前面几篇都是在讲解如何实现QQ顶部的标题栏,是用窗口贴图实现,也讲到底部区域会用不同的方法实现,因此这里底部的QQ按钮和工具栏不是在主窗口上画图了,而是用控件实现。并且这里讲解的方法不局限于使用RingS

临风的专栏 9762

android,仿QQ聊天列表滑动按钮

这个仿QQ聊天列表滑动按钮,可以添加多个按钮,可以直接运行。

模仿手机QQ 界面和功能 消息 联系人 动态 设置

高仿手机qq各个主要模块 ,包括登录、注册、设置新密码、消息、联系人、动态、设置等。

Android 仿QQ账号切换 ListView+CheckBox实现单选功能

     单选全选都是大家熟知的了,下面我说说自己的一种单选方法,没有CheckBox的两种状态图的一种实现,这里使用ListView和item中的三个控件来写的,一般单选的都是CheckBox的状态的改变,这里却是根据CheckBox来判断相对布局中的ImageView的显示隐藏,看看效果图:点击下载源码上面的第一张图就是QQ的界面,第二张是我完成的效果,下面直接看代码:1.MainActivi...

shenggaofei的博客 1135

Android 仿QQ首页的消息和电话的切换,首页的头部(完全用布局控制)

Android 仿QQ首页的消息和电话的切换,首页的头部(完全用布局控制)

仿QQ切换button,纯代码实现,告别图片

这个是我非常久曾经实现的了,当时记录到我有道云笔记里面,翻阅笔记的时候,发现了这个东西的存在,打算分享给大家,可能对大家来说已经不是什么新奇货了。可是能够帮助新学的了解一下android xml相关的知识。 首先我来看两张效果图: 看到这两张图片,可能对于非常多新学Android的同学来说,第一时间想到的可能就是RadioGroup里面包裹两个RadioB...

adr5970的博客 164

QQ中的ALT代码转换工具

QQ中的ALT代码转换工具,一般人多会用这个去转,然后去做...

仿qq底部菜单实现方式

详见博客:http://blog.youkuaiyun.com/u014727709/article/details/53671123

web前端音频一体化播放页面

button class="mode-btn active" id="musicBtn">音乐模式</button>播放栏、按钮、卡片全部采用 backdrop-filter 磨砂效果,和主流APP质感一致。适合:前端期末大作业、个人作品集、炫酷展示页、表白页面、听歌专属主页。页面自带缓慢流动渐变色彩,高级、温柔、氛围感直接拉满,告别死板白底。您的浏览器不支持视频播放。动态渐变背景、悬浮控件、MV画面切换、歌词滚动、光影特效……- CSS3:渐变动画、磨砂玻璃、flex居中、悬浮过渡动画。

weixin_66624601的博客 397

ADRV9026初始化避坑指南:手把手调试PostMcsInit常见故障

本文详细解析了ADRV9026多片同步初始化过程中的PostMcsInit常见故障,包括时钟校准失败、JESD链路建立问题和ARM核通信异常等。通过实际项目经验,提供了硬件检查清单、软件配置要点和分层诊断方法,帮助工程师快速定位和解决问题,提升系统稳定性。

hadoop5ranger的博客 620

仿QQ控件右上角按钮

首先封装一个view .h文件#import <UIKit/UIKit.h>@interface menuView : UIView @property (nonatomic, strong)UIView *view; @end.m文件#import "menuView.h"@implementation menuView- (id)initWithFrame:(CGRect)frame {

ideas press的专栏 872

Delta并联机械手-Codesys实现以及正解逆解研究

由于Codesys的Robotics模块有Delta并联机械手的运动模型,因此借助Codesys的机械手运动模型,研究自己的正解逆解算法。

weixin_42386991的博客 5567

避坑指南:QT Creator报Unknown module(s) in QT: serialport的5种解决方法

本文详细解析了Qt Creator报'Unknown module(s) in QT: serialport'错误的5种解决方法,包括检查Qt版本兼容性、安装缺失组件、配置Kit环境等。针对Windows和Linux平台提供具体操作步骤,帮助开发者快速解决串口通信模块问题,提升开发效率。

weixin_29197051的博客 157

ARM Cortex-M4端侧KWS静态评测实战指南

关键词识别(KWS)是边缘AI落地的核心技术之一,其在资源受限MCU上的部署涉及内存布局、浮点ABI、CMSIS-DSP硬件加速与RTOS协同等底层原理。理解这些机制对保障低功耗、高实时性与长期稳定性至关重要。技术价值体现在将语音唤醒压缩至256KB Flash/64KB RAM约束下稳定运行,广泛应用于智能电表、燃气报警器、工业传感器等嵌入式场景。本文聚焦ARM Cortex-M4平台,深入解析ML-KWS-for-MCU开源项目的静态评测方法论,覆盖内存对齐、中断调度、编译器差异及功耗优化等关键实践细节

weixin_33858336的博客 392

从查表法到实时计算:SimpleFOC库中正弦函数优化的技术演进

本文深入探讨了SimpleFOC库v2.0.1版本中正弦函数优化技术的演进,从传统查表法到实时计算的创新实践。通过定点数优化、对称性利用和分段线性插值等关键技术,实现了在嵌入式电机控制中的高效三角函数计算,显著提升性能和资源利用率。

weixin_28273593的博客 452

最新QQDIY动态静态名片代码

介绍: 前两天名片全失效了重新分享几个新的 内含静态+动态 图片不喜欢的可以自己换 网盘下载地址: http://kekewangLuo.net/y75q3GxBbNW 图片:

lisihui12345的博客 1万+

通过 CoovaChilli 和 FreeRADIUS 搭建一个公共 Wi-Fi 的认证系统,实现用户连接到 Wi-Fi 后通过 Captive Portal(强制登录页面)进行认证

要实现固定设备连接的功能,你可以通过MAC 地址认证来限制哪些设备可以通过 FreeRADIUS 进行身份验证和连接。你可以在 FreeRADIUS 的users文件中直接配置允许的设备的 MAC 地址,也可以通过数据库存储和查询设备信息,进一步提高管理效率。通过这些方法,你可以灵活地控制哪些设备能够访问你的 Wi-Fi 网络。

m0_69943017的博客 2650

超详细YOLOv8目标检测全程概述:环境、训练、验证与预测详解

这篇博文提供了一个关于使用YOLOv8进行目标检测的全面指南,包括环境搭建、模型训练、验证和预测的详细步骤,以及如何解释训练过程中生成的各种图表和数据。整篇文章为读者提供了一个关于如何利用YOLOv8进行目标检测的实践指南,从环境搭建到模型部署,再到结果分析,每一部分都给出了详细的步骤和解释。此外,还有对于模型输出的解释,帮助读者更好地理解和使用YOLOv8模型。

CDBmax的博客 10万+

实现像QQ一样切换账号,对应所有activity数据 ui都会相应更新,怎么实现?

切换账号后,所有界面都相应的更新为切换后的账号的数据。 如题!求高人指点。

kexichuang1571的博客 390

论文阅读:Visual Relationship Detection with Language Priors

Visual Relationship Detection with Language Priors(ECCV2016) 文章   尽管大多数的relationship并不常见,但是它们的object和predicate却更频繁地独立出现。paper用这个insight分别独立训练训练object和predicate的模型,然后再进行组合来预测relationship。Visual relatio...

Kivee的博客 2877

Android开发之Android5.1.1(CM12.1)源码下载及其编译详细流程

由于工作的需要,需要对Android framework层的源代码就行修改。所以需要下载Android的源代码并进行编译。 其实网络上的这种教程也是很多了,本来我也不打算写得,但是老总一直喊我总结一下,所以迫不得已,只好将其整理出来 希望能帮助到其他人,当然如果你已经都是一只开始脱毛的老鸟了,就直接飞过吧!一、安装VM11+Ubuntu14.04操作系统好了,现在开始今天我的主要内容了。下载An

Poison_H的专栏 1万+

小程序真机调试蓝牙可以使用,线上发布版本蓝牙无法使用

小程序提示请打开蓝牙,微信小程序蓝牙无法连接,小程序真机调试蓝牙可以使用,线上版本蓝牙无法使用,测试环境蓝牙正常,开发环境蓝牙正常,发布后蓝牙无法使用

renkai721的专栏 826

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

上一篇: Ubuntu14.04编译Android FFmpeg详细教程
下一篇: Android 中关于XLIFF你应该知道的知识点
Poison_H
博客等级 码龄12年 50粉丝 27原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值