Android UI之自定义——最简单的仿QQ音乐歌词颜色渐变

记得刚开始做android的时候,就发现QQ音乐歌词颜色渐变的效果,就在网上搜索过,但是就是没有找到满意的。今天突然用QQ音乐听歌的时候,看到歌词颜色渐变,决定来分析看看,没想到实现原来如此简单。这篇只是将最简单的歌词颜色渐变功能,不包括歌词滚动等效果。

首先来看下QQ音乐歌词界面

实现步骤

从界面上可以看出,是通过不同颜色的文本叠加所形成的视觉效果。那么android文本一般使用TextView实现,那就来试试用TextView在layout中实现。

Layout尝试 需要一个比较长的TextView和一个短的TextView

上面一个确实是一个长点的TextView和一个短点的TextView,效果如下

按照设置40dp的width,应该显示2个字才对。所以失败

接下来修改layout,关键属性android:ellipsize,当设置这个属性为none,如下

效果图如下:

貌似好像成功了,接下来看下面封装LRCTextView 2. LRCTextView封装 直接上代码

package com.example.qqmusiclrc.view;

import android.annotation.SuppressLint;

import android.content.Context;

import android.graphics.Color;

import android.util.AttributeSet;

import android.view.View;

import android.widget.RelativeLayout;

import android.widget.TextView;

@SuppressLint("NewApi")

public class LRCTextView extends RelativeLayout {

private TextView tvDefault;

private TextView tvSelect;

private String lrc = "我是测试歌词 我是测试歌词 我是测试歌词";

/** * 设置歌词 * * @param lrc */

public void setLrc(String lrc) {

this.lrc = lrc;

tvDefault.setText(lrc);

tvSelect.setText(lrc);

}

public LRCTextView(Context context, AttributeSet attrs, int defStyleAttr,

int defStyleRes) {

super(context, attrs, defStyleAttr, defStyleRes);

init();

}

public LRCTextView(Context context, AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

init();

}

public LRCTextView(Context context, AttributeSet attrs) {

super(context, attrs);

init();

}

public LRCTextView(Context context) {

super(context);

init();

}

private void init() {

tvDefault = new TextView(getContext());

tvDefault.setText(lrc);

tvDefault.setTextColor(Color.parseColor("#726463"));

tvDefault.setEllipsize(null);

tvDefault.setSingleLine();

tvDefault.setTextSize(16);

tvSelect = new TextView(getContext());

tvSelect.setTextColor(Color.parseColor("#39DF7C"));

tvSelect.setText(lrc);

tvSelect.setEllipsize(null);

tvSelect.setSingleLine();

tvSelect.setTextSize(16);

addView(tvDefault);

addView(tvSelect);

tvSelect.setWidth(0);

}

@Override

protected void onWindowVisibilityChanged(int visibility) {

super.onWindowVisibilityChanged(visibility);

if (visibility == View.VISIBLE) {

postDelayed(new Runnable() {

@Override

public void run() {

setPercent(percent);

}

}, 10);

}

}

private float percent;

/** * 设置颜色渐变百分比 * * @param percent */

public void setPercent(float percent) {

this.percent = percent;

setSelectWidth((int) (getSelectWidth() * percent));

}

private int getSelectWidth() {

return tvDefault.getWidth();

}

private void setSelectWidth(int pixels) {

if (pixels <= getSelectWidth()) {

tvSelect.setWidth(pixels);

}

}

}

代码很简单,我就不多说啥了。

android 渐变歌词,Android UI之自定义——最简单的仿QQ音乐歌词颜色渐变相关推荐

  1. Android自定义View,高仿QQ音乐歌词滚动控件!

    最近在以QQ音乐为样板做一个手机音乐播放器,源码下篇博文放出.今天我想聊的是这个QQ音乐播放器中歌词显示控件的问题,和小伙伴们一起来探讨怎么实现这个歌词滚动的效果.OK,废话不多说,先来看看效果图: ...

  2. wpf 仿QQ音乐歌词卡拉OK

    最近用WPF做了个音乐播放器,读取歌词.歌词同步都已经实现了.卡拉OK逐字变色 也实现了,但是逐字变色时不能根据歌手唱的快慢来逐字显示.请问各位大神,这个如何解决,有何思路?(附上我做的界面) 感谢各 ...

  3. android qq音乐布局,仿QQ音乐底部栏

    最近在开发一款高仿QQ音乐播放器的Demo,遇到了一个问题,在QQ音乐主界面有一个常驻底部栏,底部栏中有一个可左右滑动切歌的组件,最后还是实现了效果,今天来回顾一下实现过程. 要实现的就是最下方的常驻 ...

  4. 安卓自定义日期控件(仿QQ,IOS7)

    还记得上篇:高大上的安卓日期时间选择器,本篇是根据上篇修改而来,先看下qq中日期选择的效果: 鉴于目前还没有相似的开源日期控件,因此本人花费了一些时间修改了下之前的日期控件,效果如图: 虽说相似度不是 ...

  5. android view设置按钮颜色_Android 酷炫自定义 View:高仿 QQ 窗帘菜单

    作者:大公爵 链接:https://www.jianshu.com/p/cdb3d373fe37 介绍 不知道大家是否有印象,QQ 曾经有个版本用到了一种双向侧拉菜单,就像窗帘一样可以两边开合,并且伴 ...

  6. android 自定义特效,Android自定义View之高仿QQ健康

    我们都知道自定义View一般有三种直接继承View.继承原有的控件对控件的进行修改.重新拼装组合,最后一种主要针对于ViewGroup.具体的怎么做不是本文的所涉及的内容(本文是基于第一种方式实现的) ...

  7. android 仿QQ音乐歌单效果

    最新的项目里面,有一个需求比较好玩,就是要仿造下QQ音乐里面的歌单上下切换效果,如下 先做一个类似的效果,测试效果如下: 而为了快速开发,不花时间在制造轮子上面,我选用是的zhy大神的一个自定义lay ...

  8. Android—简单的仿QQ聊天界面

    最近仿照QQ聊天做了一个类似界面,先看下界面组成(画面不太美凑合凑合呗,,,,): 其中聊天背景可以是一个LinearLayout或者RelativeLayout里面存放的是ListView(将Lis ...

  9. android qq音乐 activity,android 仿QQ音乐建议反馈上方的提示动画效果,渐隐

    第一种,在activity里直接代码写,但是有些手机无法实现动画效果,如酷派 float curTranslationY = notice_lab.getTranslationY(); float t ...

  10. 自定义View学习之仿QQ运动步数进度效果

    自定义View学习的小记录之第一篇 自定义View学习之QQ计步器 如何实现 1.分析想要得到什么效果 2.确定自定义属性,编写attrs.xml 3.在布局中使用 4.在自定义View中获取自定义属 ...

最新文章

  1. memcache基础教程
  2. Daily Scrum 11.5
  3. 网页爬虫python代码_《用python写网络爬虫》完整版+源码
  4. 软件开发最重要的十件事
  5. Oracle下scott用户无法登录
  6. strace 分析mysql 内存占用_关于mysql cluster适用场景的分析
  7. Spark _09资源调度和任务调度
  8. ERROR: ld.so: object 'libgtk3-nocsd.so.0' from LD_PRELOAD cannot be preloaded
  9. 学python五大理由_学习Python的五大理由
  10. PetShop之ASP.NET缓存(转载)
  11. WinAPI【消息及相关结构体】
  12. 深入浅出之正则表达式(转载)
  13. iOS GZWaterfall任何形式的瀑布流
  14. html/jquery最实用功能与注意点
  15. hue安装使用,集成数据库
  16. LM324运放作为比较器输出不稳定问题的探讨
  17. YY淘宝商品数据库设计
  18. 如何从PayPal提现
  19. PHP中文转换为数组,PHP文本处理之中文汉字字符串转换为数组
  20. 矩形选框工具 部分快捷键练习

热门文章

  1. 必看 | 机器视觉基础入门
  2. SVN切换IP,不换路径,快捷方法
  3. ESP8266 WIFI 模块连接OneNet测试
  4. rufus设置linux分区,rufus使用教程【处理方案】
  5. 2020全国地图矢量数据gis地图数据(下载获取支持)
  6. 商品信息mysql设计_电商-商品信息 - 数据库设计 - 数据库表结构 - 果创云
  7. 软件开发生命周期汇总
  8. mysql update 子表,mysql update 子查询锁表问题
  9. ubuntu系统下搭建本地物联网mqtt服务器的步骤
  10. 【愚公系列】2022年02月 Django商城项目 33-订单确认功能实现