android 仿qq音乐歌词,Android UI之自定义——最简单的仿QQ音乐歌词颜色渐变
Android UI之自定义——最简单的仿QQ音乐歌词颜色渐变
记得刚开始做android的时候,就发现QQ音乐歌词颜色渐变的效果,就在网上搜索过,但是就是没有找到满意的。今天突然用QQ音乐听歌的时候,看到歌词颜色渐变,决定来分析看看,没想到实现原来如此简单。这篇只是将最简单的歌词颜色渐变功能,不包括歌词滚动等效果。
首先来看下QQ音乐歌词界面
实现步骤
从界面上可以看出,是通过不同颜色的文本叠加所形成的视觉效果。那么android文本一般使用TextView实现,那就来试试用TextView在layout中实现。
Layout尝试
需要一个比较长的TextView和一个短的TextView
android:layout_height="wrap_content" >
android:layout_height="wrap_content"
android:singleLine="true"
android:text="最简单的仿QQ音乐歌词颜色渐变"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#726463" />
android:layout_height="wrap_content"
android:singleLine="true"
android:text="最简单的仿QQ音乐歌词颜色渐变"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#39DF7C" />
上面一个确实是一个长点的TextView和一个短点的TextView,效果如下
按照设置40dp的width,应该显示2个字才对。所以失败
接下来修改layout,关键属性android:ellipsize,当设置这个属性为none,如下
android:layout_height="wrap_content" >
android:layout_height="wrap_content"
android:singleLine="true"
android:text="最简单的仿QQ音乐歌词颜色渐变"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#726463" />
android:layout_height="wrap_content"
android:ellipsize="none"
android:singleLine="true"
android:text="最简单的仿QQ音乐歌词颜色渐变"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#39DF7C" />
效果图如下:
貌似好像成功了,接下来看下面封装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);
}
}
}
代码很简单,我就不多说啥了。
最后
上传demo,点击这里下载(后续补上,csdn还没审核通过,很奇怪。现在需要代码的请留下邮箱)
android 仿qq音乐歌词,Android UI之自定义——最简单的仿QQ音乐歌词颜色渐变相关推荐
- Android零基础入门第24节:自定义View简单使用
Android零基础入门第24节:自定义View简单使用 原文:Android零基础入门第24节:自定义View简单使用 当我们开发中遇到Android原生的组件无法满足需求时,这时候就应该自定义Vi ...
- iOS微信QQ聊天界面的UI框架以及Socket简单实现群聊功能
7.1日更新 Python3 TCP Demo相关 https://blog.csdn.net/Deft_MKJing/article/details/80851879 2.2日更新,socket简易 ...
- Android 第三方库--2017年Android开源项目及库汇总
转自:http://blog.csdn.net/jsonnan/article/details/62215287 东西有点多,但是资源绝对nice,自己都全部亲身体验过了,大家可放心使用 github ...
- Android零基础入门第40节:自定义ArrayAdapter
原文:Android零基础入门第40节:自定义ArrayAdapter ListView用起来还是比较简单的,也是Android应用程序中最重要的一个组件,但其他ListView可以随你所愿,能够完成 ...
- Android自定义View,高仿QQ音乐歌词滚动控件!
最近在以QQ音乐为样板做一个手机音乐播放器,源码下篇博文放出.今天我想聊的是这个QQ音乐播放器中歌词显示控件的问题,和小伙伴们一起来探讨怎么实现这个歌词滚动的效果.OK,废话不多说,先来看看效果图: ...
- android 仿qq好友动态,Android UI仿QQ好友列表分组悬浮效果
本文实例为大家分享了Android UI仿QQ好友列表分组悬浮效果的具体代码,供大家参考,具体内容如下 楼主是在平板上測试的.图片略微有点大,大家看看效果就好 接下来贴源代码: PinnedHeade ...
- 高仿手机QQ音乐之——Android带进度条的开关
最新版的手机QQ音乐体验确实不错,发现首页播放按钮可以显示歌曲当前进度条,觉得挺有新意!效果如下: 自己琢磨了下,可以用自定义组件来实现,试着做了一下,效果如下: 整理了下思路,大概设计流程是这样的: ...
- 【android】音乐播放器之UI设计的点点滴滴
学习Android有一个多月,看完了<第一行代码>以及mars老师的第一期视频通过音乐播放器小项目加深对知识点的理解.从本文开始,将详细的介绍简单仿多米音乐播放器的实现,以及网络解析数据获 ...
- Android音乐播放器 -- UI 代码构现
Fragment是 android3.0之后出现的概念, 目前广泛使用与各种App中,比如大家非常熟悉的微信,QQ等的切换,我使用了Fragment实现 我的 / 歌手 / 专辑 列表切换,下面是利用 ...
- android仿酷狗界面,Android仿酷狗动感歌词(支持翻译和音译歌词)显示效果
简介 该开源依赖库是乐乐音乐播放器里的一个歌词模块功能,现在把该功能模块独立出来进行优化,并弄成了一个开源依赖库,其它音乐播放器项目只要引用该库并调用接口,便可轻松实现与乐乐音乐播放器一样的动感歌词显 ...
最新文章
- python操作三大主流数据库(6)python操作mysql⑥新闻管理后台功能的完善(增、ajax异步删除新闻、改、查)...
- 05. 取SQL分组中的某几行数据
- Entity Framewrok 7beta7中不同版本sql server自动生成分页sql语句的问题
- 3520a mmz错误解决方法
- AddOutParameter引发类型问题
- 博客园自动显示随笔标签
- 解码2017双11:全球狂欢新记录背后的阿里云存储
- 基础强化:深入理解JVM中的方法调用
- python多元回归因子选取_Python中的多元回归(带因子选择)
- 最新短视频去水印小程序源码/带流量主/外卖CPS系统/批量解析/修改MD5
- 基于树莓派的智能魔镜,支持人脸识别、情感监测、热词唤醒、语音交互,以及与手机APP交互、温湿度/新闻热点/日期显示等
- Tableau宣布退出中国市场,背后的原因细思恐极...
- vue+i18n 切换语言后无法刷新数据 的 解决方案
- QFile读取移动硬盘文件卡死问题
- 使用keras时候,pycharm控制台太多日志,导致最开始的有用信息被覆盖,解决方案
- Linux实例丢失SSH密钥对的解决步骤
- 双曲铝单板是怎么生产的?
- IntelliJ IDEA单元测试入门
- 五.抽象接口与依赖反转(C面向对象开发)
- 双流中学高2021年高考成绩查询,2020成都57所高中高考成绩大汇总,哪些学校考得好,家长心知肚明!...
热门文章
- Mystery——团队作业——系统设计
- 基于python3的百度街景地图爬虫
- 线性代数笔记1.1n阶行列式
- 总结2019,立2020flag
- LED背光源技术特点
- gmail 设置 smtp_如何在Linux上使用Gmail或SMTP设置电子邮件警报
- 双创项目_宫颈癌风险智能检测(2)
- electron操作注册表时,regedit模块功能缺少deleteValue功能的解决办法
- linux命令行连接蓝牙音箱,有些Linux发行版用蓝牙连接天猫精灵和小爱音箱没声音...
- P1157 组合的输出(#define mian main)