private String lrcTitle; // 歌词名称
private String lrcSize; // 歌词大小
public Mp3Info() {
super();
}
/**
-
@param id
-
@param title
-
@param album
-
@param artist
-
@param duration
-
@param size
-
@param lrcTitle
-
@param lrcSize
-
@param url
*/
public Mp3Info(int id, String title, String album, String artist,
int duration, int size, String lrcTitle, String lrcSize,
String url) {
super();
this.id = id;
this.title = title;
this.album = album;
this.artist = artist;
this.duration = duration;
this.size = size;
this.lrcTitle = lrcTitle;
this.lrcSize = lrcSize;
this.url = url;
}
@Override
public String toString() {
return “Mp3Info [id=” + id + “, title=” + title + “, album=” + album
-
“, artist=” + artist + “, duration=” + duration + “, size=”
-
size + “, url=” + url + “, lrcTitle=” + lrcTitle
-
“, lrcSize=” + lrcSize + “]”;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getAlbum() {
return album;
}
public void setAlbum(String album) {
this.album = album;
}
public String getArtist() {
return artist;
}
public void setArtist(String artist) {
this.artist = artist;
}
public long getDuration() {
return duration;
}
public void setDuration(long duration) {
this.duration = duration;
}
public long getSize() {
return size;
}
public void setSize(long size) {
this.size = size;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getLrcTitle() {
return lrcTitle;
}
public void setLrcTitle(String lrcTitle) {
this.lrcTitle = lrcTitle;
}
public String getLrcSize() {
return lrcSize;
}
public void setLrcSize(String lrcSize) {
this.lrcSize = lrcSize;
}
}
这篇博客要增加的功能是控制音量,其实已经非常简单了,不过这里用到了动画还是可以用来讲讲的。
运行效果截图:
点击左下角的那个音频按钮就可以显示出控制音量的面板,滑动拖动条就可以控制音量了。
控制音量面板的布局代码:
<RelativeLayout
android:id=“@+id/ll_player_voice”
android:layout_width=“fill_parent”
android:layout_height=“wrap_content”
android:layout_below=“@id/header_layout”
android:background=“@drawable/player_progresslayout_bg”
android:visibility=“gone” >
<ImageView
android:id=“@+id/iv_player_min_voice”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:layout_alignParentLeft=“true”
android:layout_centerVertical=“true”
android:background=“@drawable/volume_min_icon” />
<ImageView
android:id=“@+id/iv_player_max_voice”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:layout_alignParentRight=“true”
android:layout_centerVertical=“true”
android:background=“@drawable/volume_max_icon” />
<SeekBar
android:id=“@+id/sb_player_voice”
android:layout_width=“fill_parent”
android:layout_height=“wrap_content”
android:layout_centerVertical=“true”
android:layout_toLeftOf=“@id/iv_player_max_voice”
android:layout_toRightOf=“@id/iv_player_min_voice”
android:background=“@drawable/voice_seekbar_bg”
android:paddingLeft=“5dp”
android:paddingRight=“5dp”
android:progressDrawable=“@drawable/voice_seekbar_progress”
android:thumb=“@drawable/voice_seekbar_thumb” />
/drawable/voice_seekbar_progress.xml
这个用来显示进度条,用到了图层资源
<?xml version="1.0" encoding="utf-8"?><item android:id=“@android:id/background”
android:drawable=“@drawable/voice_seekbar_bg”>
/drawable、voice_seekbar_thumb.xml
拖动条滑块的选择器
<?xml version="1.0" encoding="utf-8"?>写到这里,我想到了可能令开发者头痛的应该是没有合适的素材,其实这些素材并不一定要自己去做,况且也不一定能做到美观,也没那么多时间。所以我们可以就地取材,这时候反编译的技术就有用了,下载一些你认为你需要用到的素材的应用的APK文件,进行反编译,就可以得到大量的素材。把这些素材用到你的应用就行啦。反正小巫一直都是这么做的,小巫没办法自己去做。
接着:定义相应的变量
private AudioManager am; //音频管理引用,提供对音频的控制
RelativeLayout ll_player_voice; //音量控制面板布局
int currentVolume; //当前音量
int maxVolume; //最大音量
ImageButton ibtn_player_voice; //显示音量控制面板的按钮
SeekBar sb_player_voice; //控制音量大小
// 音量面板显示和隐藏动画
private Animation showVoicePanelAnimation;
private Animation hiddenVoicePanelAnimation;
获取对象
showVoicePanelAnimation = AnimationUtils.loadAnimation(PlayerActivity.this, R.anim.push_up_in);
hiddenVoicePanelAnimation = AnimationUtils.loadAnimation(PlayerActivity.this, R.anim.push_up_out);
//获得系统音频管理服务对象
am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
currentVolume = am.getStreamVolume(AudioManager.STREAM_MUSIC);
maxVolume = am.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
sb_player_voice.setMax(maxVolume);
动画文件
puch_up_in.xml
<?xml version="1.0" encoding="utf-8"?>push_up_out.xml
<?xml version="1.0" encoding="utf-8"?>自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)
最后
这里我特地整理了一份《Android开发核心知识点笔记》,里面就包含了自定义View相关的内容
除了这份笔记,还给大家分享 Android学习PDF+架构视频+面试文档+源码笔记,高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料这几块的内容。非常适合近期有面试和想在技术道路上继续精进的朋友。
分享上面这些资源,希望可以帮助到大家提升进阶,如果你觉得还算有用的话,不妨把它们推荐给你的朋友~
喜欢本文的话,给我点个小赞、评论区留言或者转发支持一下呗~
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
义、实战项目、讲解视频,并且会持续更新!**
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)
[外链图片转存中…(img-UhmH7k3o-1713806579708)]
最后
这里我特地整理了一份《Android开发核心知识点笔记》,里面就包含了自定义View相关的内容
[外链图片转存中…(img-JNasBEaN-1713806579709)]
除了这份笔记,还给大家分享 Android学习PDF+架构视频+面试文档+源码笔记,高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料这几块的内容。非常适合近期有面试和想在技术道路上继续精进的朋友。
[外链图片转存中…(img-oPm74ShE-1713806579710)]
分享上面这些资源,希望可以帮助到大家提升进阶,如果你觉得还算有用的话,不妨把它们推荐给你的朋友~
喜欢本文的话,给我点个小赞、评论区留言或者转发支持一下呗~
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!