android 渐变歌词,Android UI之自定义——最简单的仿QQ音乐歌词颜色渐变
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音乐歌词颜色渐变相关推荐
- Android自定义View,高仿QQ音乐歌词滚动控件!
最近在以QQ音乐为样板做一个手机音乐播放器,源码下篇博文放出.今天我想聊的是这个QQ音乐播放器中歌词显示控件的问题,和小伙伴们一起来探讨怎么实现这个歌词滚动的效果.OK,废话不多说,先来看看效果图: ...
- wpf 仿QQ音乐歌词卡拉OK
最近用WPF做了个音乐播放器,读取歌词.歌词同步都已经实现了.卡拉OK逐字变色 也实现了,但是逐字变色时不能根据歌手唱的快慢来逐字显示.请问各位大神,这个如何解决,有何思路?(附上我做的界面) 感谢各 ...
- android qq音乐布局,仿QQ音乐底部栏
最近在开发一款高仿QQ音乐播放器的Demo,遇到了一个问题,在QQ音乐主界面有一个常驻底部栏,底部栏中有一个可左右滑动切歌的组件,最后还是实现了效果,今天来回顾一下实现过程. 要实现的就是最下方的常驻 ...
- 安卓自定义日期控件(仿QQ,IOS7)
还记得上篇:高大上的安卓日期时间选择器,本篇是根据上篇修改而来,先看下qq中日期选择的效果: 鉴于目前还没有相似的开源日期控件,因此本人花费了一些时间修改了下之前的日期控件,效果如图: 虽说相似度不是 ...
- android view设置按钮颜色_Android 酷炫自定义 View:高仿 QQ 窗帘菜单
作者:大公爵 链接:https://www.jianshu.com/p/cdb3d373fe37 介绍 不知道大家是否有印象,QQ 曾经有个版本用到了一种双向侧拉菜单,就像窗帘一样可以两边开合,并且伴 ...
- android 自定义特效,Android自定义View之高仿QQ健康
我们都知道自定义View一般有三种直接继承View.继承原有的控件对控件的进行修改.重新拼装组合,最后一种主要针对于ViewGroup.具体的怎么做不是本文的所涉及的内容(本文是基于第一种方式实现的) ...
- android 仿QQ音乐歌单效果
最新的项目里面,有一个需求比较好玩,就是要仿造下QQ音乐里面的歌单上下切换效果,如下 先做一个类似的效果,测试效果如下: 而为了快速开发,不花时间在制造轮子上面,我选用是的zhy大神的一个自定义lay ...
- Android—简单的仿QQ聊天界面
最近仿照QQ聊天做了一个类似界面,先看下界面组成(画面不太美凑合凑合呗,,,,): 其中聊天背景可以是一个LinearLayout或者RelativeLayout里面存放的是ListView(将Lis ...
- android qq音乐 activity,android 仿QQ音乐建议反馈上方的提示动画效果,渐隐
第一种,在activity里直接代码写,但是有些手机无法实现动画效果,如酷派 float curTranslationY = notice_lab.getTranslationY(); float t ...
- 自定义View学习之仿QQ运动步数进度效果
自定义View学习的小记录之第一篇 自定义View学习之QQ计步器 如何实现 1.分析想要得到什么效果 2.确定自定义属性,编写attrs.xml 3.在布局中使用 4.在自定义View中获取自定义属 ...
最新文章
- memcache基础教程
- Daily Scrum 11.5
- 网页爬虫python代码_《用python写网络爬虫》完整版+源码
- 软件开发最重要的十件事
- Oracle下scott用户无法登录
- strace 分析mysql 内存占用_关于mysql cluster适用场景的分析
- Spark _09资源调度和任务调度
- ERROR: ld.so: object 'libgtk3-nocsd.so.0' from LD_PRELOAD cannot be preloaded
- 学python五大理由_学习Python的五大理由
- PetShop之ASP.NET缓存(转载)
- WinAPI【消息及相关结构体】
- 深入浅出之正则表达式(转载)
- iOS GZWaterfall任何形式的瀑布流
- html/jquery最实用功能与注意点
- hue安装使用,集成数据库
- LM324运放作为比较器输出不稳定问题的探讨
- YY淘宝商品数据库设计
- 如何从PayPal提现
- PHP中文转换为数组,PHP文本处理之中文汉字字符串转换为数组
- 矩形选框工具 部分快捷键练习