Android音乐播放器(三)轮播图
这是去年大二做的一个简单音乐播放器项目:是尽可能模仿酷狗音乐写的,具体实现的功能如下:
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音乐播放器(三)轮播图相关推荐
- 基于原生JS写的异形轮播图--效果如网易云、QQ音乐播放器中轮播图
css部分 <style>#box{height:500px;width:1000px;position: relative;margin:100px auto;overflow: hid ...
- Android 音乐播放器的开发教程(三) 小卷毛播放器的主界面开发 ---- 小达
Android 音乐播放器的开发教程(三) 小卷毛播放器的主界面开发 拿好素材之后,打开你们的开发工具,小达这里用的是android studio1.0, 新建一个项目,打开activity_main ...
- 基于android音乐播放器的设计
本科毕业论文(设计)诚信声明 本人郑重声明:所呈交的毕业论文(设计),题目<---基于android音乐播放器的设计----------->是本人在指导教师的指导下,进行研究工作所取得的成 ...
- Android音乐播放器开发(6)—ListView组件创建歌曲播放列表(内含原理分析)
1. 说明 源码已同步到Gitee仓库,GitHub仓库,觉得还不错的话帮忙点个"star"吧,非常感谢. 以往的文章 服务端:Android音乐播放器开发–服务端 登录:Andr ...
- 基于android的音乐播放器毕业设计,基于android音乐播放器的毕业设计ppt
<基于android音乐播放器的毕业设计ppt>由会员分享,可在线阅读,更多相关<基于android音乐播放器的毕业设计ppt(29页珍藏版)>请在人人文库网上搜索. 1.1. ...
- Android音乐播放器的开发实例(2021新版-Java版)
Android音乐播放器的开发实例 介绍 该项目旨在引导喜爱 Android 开发爱好者入门教程实例,可以一步一步的跟着来完成属于自己的项目开发过程. 此项目为基于 Java 语言开发,使用 Recy ...
- Android音乐播放器开发(5)—播放界面(播放、暂停、上一首、下一首,顺序播放、随机播放、拖拽进度条…)
1. 说明 源码已同步到Gitee仓库,Github仓库,觉得还不错的话帮忙点个"star"吧,非常感谢. Android播放器专栏其它文章: 服务端:Android音乐播放器开发 ...
- Android音乐播放器的设计与实现
课程设计报告 实习名称 课程设计2 设计题目 Android音乐播放器的设计与实现 目录 摘要11 1 引言22 2 可行性分析22 2.1 技术可行性22 2.2 经济可行性33 2.3 管理可行性 ...
- Android音乐播放器开发(3)—注册
1. 说明 本音乐播放器基于Android开发,原为我和另外两个小伙伴在上学期间一起做的一个小项目,近来有时间整理一下.之前我有文章已经介绍了播放界面的功能实现(Android音乐播放器开发),但介绍 ...
- Android音乐播放器开发(4)—修改密码
1. 说明 本音乐播放器基于Android开发,原为我和另外两个小伙伴在上学期间一起做的一个小项目,近来有时间整理一下.之前我有文章已经介绍了播放界面的功能实现(Android音乐播放器开发),但介绍 ...
最新文章
- Android消息机制学习笔记
- Solaris下ftp配置(初稿-待补充)
- 扫地机器人评测 毛发_会切毛发的机器人?海尔扫地机P70抢先评测
- 关于default constructor一个要注意的地方
- 移动端通过ajax上传图片(文件)并在前台展示——通过H5的FormData对象
- 在Github上面搭建一个自己域名的Hexo博客
- set集合和深浅拷贝
- windowsthinpc虚拟内存_windows thin pc如何开启windows功能
- 大数据建设意义_大数据一体化平台打造政府智能数据库,助力智慧政务建设
- wincc工程组态论文_基于WinCC软件的组态设计与实现
- cmake和make区别
- Visual Studio配置(4):项目属性页-VC++目录
- zoom 前台_鼠标hover元素scale/zoom中心点放大效果实例页面
- 系统规划与管理师历年论文
- 全国各省市区县数据整理
- 【北交所周报】北交所再迎8只新股;康普化学、凯华材料上市首日逆势大涨;康乐卫士过会,或成北交所最大IPO;北交所推出直联机制...
- VMware虚拟机安装MAC OS原版系统,轻松体验苹果操作系统
- 推荐一个程序员必备官方 App ,名字叫:力扣
- 安装Asterisk
- 如何用u盘做系统盘?