这是去年大二做的一个简单音乐播放器项目:是尽可能模仿酷狗音乐写的,具体实现的功能如下:

1:启动动画:点击运行程序会出现一个两秒钟的视频,类似酷狗音乐的启动动画一样,非常可观!

2:登录注册界面:输入账号和密码检验信息登录!

3:轮播图:和酷狗音乐的一模一样,在主界面的上方有一个自动循环的轮播图,点击轮播图的每一个图片信息即可进入对应的具体服务,非常具有加分点!

4:音乐唱片的转盘,歌曲同步进度条,以及音乐的暂停/播放/继续/上下曲切换!

5:音乐的搜索实现!

6:视频专栏的播放!

7;个人信息界面的布局实现,如反馈,评分,更多,性别年龄昵称,收藏等!

轮播图代码如下:

package com.ypc.xiaoxiongmusic;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.media.Image;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SearchView;
import android.widget.TextView;
import android.app.Fragment;import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;import static android.view.View.VISIBLE;@SuppressLint("ValidFragment")
public class musicFragment extends Fragment  {ListView lv;SearchView searchView;private ViewPager mViewPaper;private List<ImageView> images;private List<View> dots;private int currentItem;//记录上一次点的位置private int oldPosition = 0;//存放图片的idprivate int selectedPosition=0;private ImageView bf;private int[] imageIds = new int[]{R.drawable.lunchatu1,R.drawable.lunchatu2,R.drawable.lunchatu3,R.drawable.lunchatu2,R.drawable.lunchatu3};//存放图片的标题private String[]  titles = new String[]{"再次相见,还是你","这一天,我等了好久","天才少女再次回归","畅想音乐,点亮你我","HELLO,DY.MEMORY"};private TextView title;private ViewPagerAdapter adapter;private ScheduledExecutorService scheduledExecutorService;private static List<Integer> sPics=new ArrayList<>();//当时测试颜色用的/* static {sPics.add(R.drawable.b1);sPics.add(R.drawable.b2);sPics.add(R.drawable.b3);}*/private ImageView m1,m2,m3,m4;private View view;public static String[] name={"太妍 (태연) - 들리나요(听得见吗)","太妍 (태연) - 제주도의 푸른 밤(济州岛的蓝夜)","太妍 (태연) - 그리고 하나(还有一个)","太妍 (태연) - Rescue Me","太妍 (태연) - My Love (Duet Ver.)","华晨宇 - 好想爱这个世界啊(Live)","华晨宇 - 与火星的孩子对话","华晨宇 - 国王与乞丐","华晨宇 - 斗牛(Live)","华晨宇 - 烟火里的尘埃","华晨宇 - 疯人院(Live)","华晨宇 - 环游","华晨宇 - 寻","华晨宇 - 无聊人","华晨宇 - For Forever","华晨宇 - 蜉蝣","华晨宇 - 我们(Live)","华晨宇 - 异类","华晨宇 - 我管你","华晨宇 - 你要相信这不是最后一天","华晨宇 - 寒鸦少年","华晨宇 - 齐天","张艺兴 - 会好的","张艺兴 - 晚安","张艺兴 - 一个人","张艺兴 - 面罩 (Live)","张艺兴 - 外婆","张艺兴 - 我不好","张艺兴 - 祈愿","太妍 (태연) - Gee (Busking Ver.)(Live)","太妍 (태연) - 만약에(如果) (Busking Ver.)(Live)","太妍 (태연) - bad guy (Busking Ver.)(Live)","太妍 (태연) - 기억을 걷는 시간(聚集记忆的时间) (Busking Ver.)(Live)","张国荣 - 怪你过份美丽","张国荣 - 左右手","张国荣 - 至少还有你 (00 Live)(live版)","张国荣 - 我"};public static int[] icons={R.drawable.musicx,R.drawable.musicx,R.drawable.musicx,R.drawable.musicx,R.drawable.musicx,R.drawable.musicx,R.drawable.musicx,R.drawable.musicx,R.drawable.musicx,R.drawable.musicx,R.drawable.musicx,R.drawable.musicx,R.drawable.musicx,R.drawable.musicx,R.drawable.musicx,R.drawable.musicx,R.drawable.musicx,R.drawable.musicx,R.drawable.musicx,R.drawable.musicx,R.drawable.musicx,R.drawable.musicx,R.drawable.musicx,R.drawable.musicx,R.drawable.musicx,R.drawable.musicx,R.drawable.musicx,R.drawable.musicx,R.drawable.musicx,R.drawable.musicx,R.drawable.musicx,R.drawable.musicx,R.drawable.musicx,R.drawable.musicx,R.drawable.musicx,R.drawable.musicx,R.drawable.musicx};@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){View view = inflater.inflate(R.layout.fragment_music, container, false);//lv.setAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, name));searchView =view.findViewById(R.id.sv);lv=view.findViewById(R.id.lv);lv.setTextFilterEnabled(true);// 设置搜索文本监听searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {// 当点击搜索按钮时触发该方法@Overridepublic boolean onQueryTextSubmit(String query) {return false;}// 当搜索内容改变时触发该方法@Overridepublic boolean onQueryTextChange(String newText) {if (!TextUtils.isEmpty(newText)){lv.setFilterText(newText);}else{lv.clearTextFilter();}return false;}});bf=view.findViewById(R.id.bf);mViewPaper = (ViewPager)view. findViewById(R.id.vp);images = new ArrayList<ImageView>();for(int i = 0; i < imageIds.length; i++){ImageView imageView = new ImageView(getActivity());imageView.setBackgroundResource(imageIds[i]);images.add(imageView);}dots = new ArrayList<View>();dots.add(view.findViewById(R.id.dot_0));dots.add(view.findViewById(R.id.dot_1));dots.add(view.findViewById(R.id.dot_2));dots.add(view.findViewById(R.id.dot_3));dots.add(view.findViewById(R.id.dot_4));title = (TextView) view.findViewById(R.id.title);title.setText(titles[0]);adapter = new ViewPagerAdapter();mViewPaper.setAdapter(adapter);//论插图的ontauch点击方法mViewPaper.setOnTouchListener(new View.OnTouchListener() {int flage = 0 ;public boolean onTouch(View v, MotionEvent event) {switch (event.getAction()){case MotionEvent.ACTION_DOWN:flage = 0 ;break ;case MotionEvent.ACTION_MOVE:flage = 1 ;break ;case  MotionEvent.ACTION_UP :if (flage == 0) {int item = mViewPaper.getCurrentItem();if (item == 0) {Intent intent = new Intent();intent.setAction("android.intent.action.VIEW");Uri content_url = Uri.parse("https://www.kuaishou.com/f/X-5hKhok9ebbLDq1");//此处填链接intent.setData(content_url);startActivity(intent);} else if (item == 1) {Intent intent = new Intent();intent.setAction("android.intent.action.VIEW");Uri content_url = Uri.parse("https://www.kuaishou.com/f/X-5hKhok9ebbLDq1");//此处填链接intent.setData(content_url);startActivity(intent);} else if (item == 2) {Intent intent = new Intent();intent.setAction("android.intent.action.VIEW");Uri content_url = Uri.parse("https://www.kuaishou.com/f/X-5hKhok9ebbLDq1");//此处填链接intent.setData(content_url);startActivity(intent);}else if (item == 3) {Intent intent = new Intent();intent.setAction("android.intent.action.VIEW");Uri content_url = Uri.parse("https://www.kuaishou.com/f/X-5hKhok9ebbLDq1");//此处填链接intent.setData(content_url);startActivity(intent);} else if (item == 4) {Intent intent = new Intent();intent.setAction("android.intent.action.VIEW");Uri content_url = Uri.parse("https://www.kuaishou.com/f/X-5hKhok9ebbLDq1");//此处填链接intent.setData(content_url);startActivity(intent);}}break ;}return false;}});mViewPaper.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {@Overridepublic void onPageSelected(int position) {title.setText(titles[position]);dots.get(position).setBackgroundResource(R.drawable.red);//Toast.makeText(getActivity(),"hurhurhghrui",Toast.LENGTH_SHORT).show();dots.get(oldPosition).setBackgroundResource(R.drawable.pure);oldPosition = position;currentItem = position;}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {}@Overridepublic void onPageScrollStateChanged(int arg0) {}});m1=view.findViewById(R.id.m1);m2=view.findViewById(R.id.m2);m3=view.findViewById(R.id.m3);m4=view.findViewById(R.id.m4);m1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Intent intent4=new Intent(getActivity(),tukuActivity.class);startActivity(intent4);}});m2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Intent intent5=new Intent(getActivity(),paihangbangActivity.class);startActivity(intent5);}});m3.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Intent intent6=new Intent(getActivity(),fenleiActivity.class);startActivity(intent6);}});//ListView listView=view.findViewById(R.id.lv);MyBaseAdapter adapter=new MyBaseAdapter();lv.setAdapter(adapter);lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {Intent intent=new Intent(getActivity(),Music_Activity.class);//创建Intent对象,启动check//将数据存入Intent对象intent.putExtra("name",name[position]);intent.putExtra("position",String.valueOf(position));startActivity(intent);lv.setSelector(R.drawable.bf1);}});return view;}private class ViewPagerAdapter extends PagerAdapter {@Overridepublic int getCount() {return images.size();}@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {return arg0 == arg1;}@Overridepublic void destroyItem(ViewGroup view, int position, Object object) {// TODO Auto-generated method stubview.removeView(images.get(position));}@Overridepublic Object instantiateItem(ViewGroup view, int position) {// TODO Auto-generated method stubview.addView(images.get(position));return images.get(position);}}/* @Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}*//*** 利用线程池定时执行动画轮播*/@Overridepublic void onStart() {// TODO Auto-generated method stubsuper.onStart();scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();scheduledExecutorService.scheduleWithFixedDelay(new ViewPageTask(),2,2,TimeUnit.SECONDS);}/*** 图片轮播任务* @author liuyazhuang**/private class ViewPageTask implements Runnable{@Overridepublic void run() {currentItem = (currentItem + 1) % imageIds.length;mHandler.sendEmptyMessage(0);}}/*** 接收子线程传递过来的数据*/private Handler mHandler = new Handler(){public void handleMessage(android.os.Message msg) {mViewPaper.setCurrentItem(currentItem);};};@Overridepublic void onStop() {// TODO Auto-generated method stubsuper.onStop();if(scheduledExecutorService != null){scheduledExecutorService.shutdown();scheduledExecutorService = null;}}class MyBaseAdapter extends BaseAdapter{@Overridepublic int getCount(){return  name.length;}@Overridepublic Object getItem(int i){return name[i];}@Overridepublic long getItemId(int i){return i;}@Overridepublic View getView(int i ,View convertView, ViewGroup parent) {View view=View.inflate(musicFragment.this.getActivity(),R.layout.item_layout,null);TextView tv_name=view.findViewById(R.id.item_name);ImageView iv=view.findViewById(R.id.iv);ImageView bf=view.findViewById(R.id.bf);tv_name.setText(name[i]);iv.setImageResource(icons[i]);return view;}}}

对应的xml界面文件代码如下:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><SearchViewandroid:id="@+id/sv"android:layout_width="match_parent"android:layout_height="wrap_content"/><androidx.viewpager.widget.ViewPagerandroid:id="@+id/vp"android:layout_width="match_parent"android:layout_height="213dp"></androidx.viewpager.widget.ViewPager><LinearLayoutandroid:layout_width="match_parent"android:layout_height="45dip"android:layout_gravity="bottom"
android:background="@drawable/pure"android:gravity="center"android:orientation="vertical" ><TextViewandroid:id="@+id/title"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="图片标题"android:textColor="#0C0C0C" /><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="3dip"android:orientation="horizontal" ><Viewandroid:id="@+id/dot_0"android:layout_width="5dip"android:layout_height="5dip"android:layout_marginLeft="2dip"android:layout_marginRight="2dip"android:background="#66BD0F32"/><Viewandroid:id="@+id/dot_1"android:layout_width="5dip"android:layout_height="5dip"android:layout_marginLeft="2dip"android:layout_marginRight="2dip"android:background="#66BD0F32"/><Viewandroid:id="@+id/dot_2"android:layout_width="5dip"android:layout_height="5dip"android:layout_marginLeft="2dip"android:layout_marginRight="2dip"android:background="#66BD0F32"/><Viewandroid:id="@+id/dot_3"android:layout_width="5dip"android:layout_height="5dip"android:layout_marginLeft="2dip"android:layout_marginRight="2dip"android:background="#66BD0F32"/><Viewandroid:id="@+id/dot_4"android:layout_width="5dip"android:layout_height="5dip"android:layout_marginLeft="2dip"android:layout_marginRight="2dip"android:background="#66BD0F32"/></LinearLayout></LinearLayout><LinearLayoutandroid:layout_marginTop="20dp"android:layout_width="match_parent"android:layout_height="83dp"android:orientation="horizontal"><ImageViewandroid:id="@+id/m1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:src="@drawable/ylu" /><ImageViewandroid:layout_weight="1"android:id="@+id/m2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="10dp"android:src="@drawable/phbang" /><ImageViewandroid:layout_weight="1"android:id="@+id/m3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="10dp"android:src="@drawable/flei" /><ImageViewandroid:layout_weight="1"android:id="@+id/m4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="10dp"android:src="@drawable/cnxhuan" /></LinearLayout><ListViewandroid:background="@drawable/yybj1"android:id="@+id/lv"android:layout_width="match_parent"android:layout_height="wrap_content"/>
</LinearLayout>

效果截图如下:

Android音乐播放器(三)轮播图相关推荐

  1. 基于原生JS写的异形轮播图--效果如网易云、QQ音乐播放器中轮播图

    css部分 <style>#box{height:500px;width:1000px;position: relative;margin:100px auto;overflow: hid ...

  2. Android 音乐播放器的开发教程(三) 小卷毛播放器的主界面开发 ---- 小达

    Android 音乐播放器的开发教程(三) 小卷毛播放器的主界面开发 拿好素材之后,打开你们的开发工具,小达这里用的是android studio1.0, 新建一个项目,打开activity_main ...

  3. 基于android音乐播放器的设计

    本科毕业论文(设计)诚信声明 本人郑重声明:所呈交的毕业论文(设计),题目<---基于android音乐播放器的设计----------->是本人在指导教师的指导下,进行研究工作所取得的成 ...

  4. Android音乐播放器开发(6)—ListView组件创建歌曲播放列表(内含原理分析)

    1. 说明 源码已同步到Gitee仓库,GitHub仓库,觉得还不错的话帮忙点个"star"吧,非常感谢. 以往的文章 服务端:Android音乐播放器开发–服务端 登录:Andr ...

  5. 基于android的音乐播放器毕业设计,基于android音乐播放器的毕业设计ppt

    <基于android音乐播放器的毕业设计ppt>由会员分享,可在线阅读,更多相关<基于android音乐播放器的毕业设计ppt(29页珍藏版)>请在人人文库网上搜索. 1.1. ...

  6. Android音乐播放器的开发实例(2021新版-Java版)

    Android音乐播放器的开发实例 介绍 该项目旨在引导喜爱 Android 开发爱好者入门教程实例,可以一步一步的跟着来完成属于自己的项目开发过程. 此项目为基于 Java 语言开发,使用 Recy ...

  7. Android音乐播放器开发(5)—播放界面(播放、暂停、上一首、下一首,顺序播放、随机播放、拖拽进度条…)

    1. 说明 源码已同步到Gitee仓库,Github仓库,觉得还不错的话帮忙点个"star"吧,非常感谢. Android播放器专栏其它文章: 服务端:Android音乐播放器开发 ...

  8. Android音乐播放器的设计与实现

    课程设计报告 实习名称 课程设计2 设计题目 Android音乐播放器的设计与实现 目录 摘要11 1 引言22 2 可行性分析22 2.1 技术可行性22 2.2 经济可行性33 2.3 管理可行性 ...

  9. Android音乐播放器开发(3)—注册

    1. 说明 本音乐播放器基于Android开发,原为我和另外两个小伙伴在上学期间一起做的一个小项目,近来有时间整理一下.之前我有文章已经介绍了播放界面的功能实现(Android音乐播放器开发),但介绍 ...

  10. Android音乐播放器开发(4)—修改密码

    1. 说明 本音乐播放器基于Android开发,原为我和另外两个小伙伴在上学期间一起做的一个小项目,近来有时间整理一下.之前我有文章已经介绍了播放界面的功能实现(Android音乐播放器开发),但介绍 ...

最新文章

  1. Android消息机制学习笔记
  2. Solaris下ftp配置(初稿-待补充)
  3. 扫地机器人评测 毛发_会切毛发的机器人?海尔扫地机P70抢先评测
  4. 关于default constructor一个要注意的地方
  5. 移动端通过ajax上传图片(文件)并在前台展示——通过H5的FormData对象
  6. 在Github上面搭建一个自己域名的Hexo博客
  7. set集合和深浅拷贝
  8. windowsthinpc虚拟内存_windows thin pc如何开启windows功能
  9. 大数据建设意义_大数据一体化平台打造政府智能数据库,助力智慧政务建设
  10. wincc工程组态论文_基于WinCC软件的组态设计与实现
  11. cmake和make区别
  12. Visual Studio配置(4):项目属性页-VC++目录
  13. zoom 前台_鼠标hover元素scale/zoom中心点放大效果实例页面
  14. 系统规划与管理师历年论文
  15. 全国各省市区县数据整理
  16. 【北交所周报】北交所再迎8只新股;康普化学、凯华材料上市首日逆势大涨;康乐卫士过会,或成北交所最大IPO;北交所推出直联机制...
  17. VMware虚拟机安装MAC OS原版系统,轻松体验苹果操作系统
  18. 推荐一个程序员必备官方 App ,名字叫:力扣
  19. 安装Asterisk
  20. 如何用u盘做系统盘?

热门文章

  1. 流量劫持是如何产生的?
  2. ubuntu从零开始手工编译shogun
  3. 结合进化心理学,解析陌生交友产品的三大问题
  4. vue+echart实现双柱状图
  5. 【递推】Ybt_平铺方案
  6. IFR报告称新冠疫情后的恢复对“机器人技术”的需求很高
  7. 【推荐】真正的安卓网络摄像机(Android IPCamera)任意浏览器输入IP地址即可观看视频
  8. Mysql 避免使用 IN 和 NOT IN
  9. pip安装matplotlib
  10. 岁月不饶人,每个人都会变老