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
View view = inflater.inflate(R.layout.fragment\_music, container, false);
//lv.setAdapter(new ArrayAdapter(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() {
// 当点击搜索按钮时触发该方法
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
// 当搜索内容改变时触发该方法
@Override
public 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();
for(int i = 0; i < imageIds.length; i++){
ImageView imageView = new ImageView(getActivity());
imageView.setBackgroundResource(imageIds[i]);
images.add(imageView);
}
dots = new ArrayList();
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() {
@Override
public 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;
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public 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() {
@Override
public void onClick(View view) {
Intent intent4=new Intent(getActivity(),tukuActivity.class);
startActivity(intent4);
}
});
m2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent5=new Intent(getActivity(),paihangbangActivity.class);
startActivity(intent5);
}
});
m3.setOnClickListener(new View.OnClickListener() {
@Override
public 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() {
@Override
public 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 {
@Override
public int getCount() {
return images.size();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
@Override
public void destroyItem(ViewGroup view, int position, Object object) {
// TODO Auto-generated method stub
view.removeView(images.get(position));
}
@Override
public Object instantiateItem(ViewGroup view, int position) {
// TODO Auto-generated method stub
view.addView(images.get(position));
return images.get(position);
}
}
/ @Override public 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; }/
/**
* 利用线程池定时执行动画轮播
*/
@Override
public void onStart() {
// TODO Auto-generated method stub
super.onStart();
scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
scheduledExecutorService.scheduleWithFixedDelay(
new ViewPageTask(),
2,
2,
TimeUnit.SECONDS);
}
/**
* 图片轮播任务
* @author liuyazhuang
*
*/
private class ViewPageTask implements Runnable{
@Override
public 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);
};
};
@Override
public void onStop() {
// TODO Auto-generated method stub
super.onStop();
if(scheduledExecutorService != null){
scheduledExecutorService.shutdown();
scheduledExecutorService = null;
}
}
class MyBaseAdapter extends BaseAdapter{
@Override
public int getCount(){return name.length;}
@Override
public Object getItem(int i){return name[i];}
@Override
public long getItemId(int i){return i;}
@Override
public 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"> <SearchView android:id="@+id/sv" android:layout_width="match_parent" android:layout_height="wrap_content"/>
android:background="@drawable/pure" android:gravity="center" android:orientation="vertical" >
效果截图如下:
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除