歌词显示在屏幕上

 
 private void initOverlay() {
    	LayoutInflater inflater = LayoutInflater.from(this);
    	overlay = (TextView) inflater.inflate(R.layout.overlay, null);
    	overlay.setVisibility(View.INVISIBLE);
		WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
				LayoutParams.WRAP_CONTENT, 
				LayoutParams.WRAP_CONTENT,
				WindowManager.LayoutParams.TYPE_APPLICATION,
				WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE| WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
				PixelFormat.TRANSLUCENT);
		WindowManager windowManager = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);
		windowManager.addView(overlay, lp);
    }

 布局填充一个xml,通过注册一个 WindowManager 屏幕管理器把xml 显示的android屏幕上
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本来在做项目,看到酷我音乐盒的歌词显示挺有趣的,模仿做了一个不完整的。 (只有滚动显示,没有节奏显示)。 原理: (1)定义一个派生自CStatic类的CKaraokeLyricCtrl类(歌词控件),自绘制风格 ; (2)准备一个背景位图(保存在CKaraokeLyricCtrl::m_dcBK中); (3)设置两个计数器(ID分别为1和2),启动自绘制,1用来显示节奏(未实现,只 有框架),2用来滚动歌词; (4)自绘制函数中,将绘制的滚动歌词和背景位图混合,然后输出到屏幕上。滚动 歌词的绘制使用GDI+的Graphics::DrawString函数,歌词文本的大小、位置、字体和 透明度均自动计算和变化,模仿酷我音乐盒的形式。 以上功能均封闭实现在CKaraokeLyricCtrl类中。该类可以直接使用(见下边的使用步骤)。 使用步骤: (1)CKaraokeLyric::InitInstance中启动GDI+; (2)在CKaraokeLyricView::OnInitialUpdate中,创建歌词控件 (CKaraokeLyricCtrl类),其大小和CKaraokeLyricView视图相同,即覆盖了后者; (3)在菜单项响应中,使用CKaraokeLyricCtrl::ReadLyric读取歌词文件,再使用 CKaraokeLyricCtrl::Start即可启动歌词的滚动显示 未实现部分:(歌词的节拍显示) 虽然没有实现,但思路大致是:在后台先用另外一种颜色绘制当前突出显示歌词(即字体最大的一行歌词),根据歌曲节奏,将还未唱出部分全部涂黑,然后和屏幕上的当前行突出歌词进行混合。
要在代码中增加LRC歌词显示,你需要进行以下步骤: 1. 获取LRC歌词文件:你需要获取LRC歌词文件,该文件包含了歌曲的每一行歌词和时间戳。你可以在网上找到许多免费的LRC歌词文件,或者使用Python的文件读取功能从本地文件中读取LRC歌词。 2. 解析LRC歌词文件:你需要编写一个函数来解析LRC歌词文件,并将每一行歌词与时间戳存储到一个字典或列表中。你可以使用Python的正则表达式来解析LRC歌词文件。 3. 显示LRC歌词:你需要在程序中添加一个显示LRC歌词的函数,该函数将从解析后的LRC歌词字典或列表中获取当前时间戳对应的歌词,并将其显示屏幕上。你可以使用Python的时间模块来获取当前时间戳。 下面是一个简单的示例代码,用于从LRC歌词文件中解析歌词显示它们: ```python import re import time def parse_lrc(file_path): lrc_dict = {} with open(file_path, 'r') as f: lines = f.readlines() for line in lines: match = re.findall(r'\[(.*?)\](.*)', line) if match: for m in match: time_str = m[0] lyrics = m[1] time_list = re.findall(r'(\d+):(\d+)\.(\d+)', time_str) if time_list: timestamp = int(time_list[0][0]) * 60 + int(time_list[0][1]) + int(time_list[0][2]) / 1000 lrc_dict[timestamp] = lyrics return lrc_dict def show_lrc(lrc_dict): while True: timestamp = int(time.time()) if timestamp in lrc_dict: print(lrc_dict[timestamp]) time.sleep(0.1) if __name__ == '__main__': lrc_dict = parse_lrc('test.lrc') show_lrc(lrc_dict) ``` 在这个示例代码中,`parse_lrc`函数用于解析LRC歌词文件,并将解析后的歌词和时间戳存储在一个字典中。`show_lrc`函数用于不断获取当前时间戳,并将其与解析后的字典中的时间戳进行比较,如果匹配成功,则显示该时间戳对应的歌词
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值