大大福利站网站建设广东手机网站制作价格
news/
2025/10/2 1:56:12/
文章来源:
大大福利站网站建设,广东手机网站制作价格,百润网站建设,网站建设及管理工作岗位要求目录
一、引言
视频效果展示#xff1a;
1.启动页效果
2.登录页效果
3.注册页效果
4.歌曲列表页效果
5.播放页效果 二、详细设计
1.登陆注册功能
2.音乐列表页面
2.音乐播放功能
三、源码获取 一、引言 Android初学者开发第一个完整的实例项目应该就属《音乐播放器…目录
一、引言
视频效果展示
1.启动页效果
2.登录页效果
3.注册页效果
4.歌曲列表页效果
5.播放页效果 二、详细设计
1.登陆注册功能
2.音乐列表页面
2.音乐播放功能
三、源码获取 一、引言 Android初学者开发第一个完整的实例项目应该就属《音乐播放器》了项目包含SQLlit数据库的使用、listview、Fragment、等。话不多说先上成品
视频效果展示 Android Studio 音乐播放器 图片效果展示 1.启动页效果 2.登录页效果 3.注册页效果 4.歌曲列表页效果 5.播放页效果 二、详细设计
1.登陆注册功能 用户进行注册数据使用SQLite存储用户登录时根据数据库的内容来核对用户名和密码是否正确。 Login.xml代码
?xml version1.0 encodingutf-8?
androidx.constraintlayout.widget.ConstraintLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:background#f9d7e7tools:context.Login.LoginActivityImageViewandroid:idid/imageView3android:layout_width200dpandroid:layout_height150dpandroid:layout_marginTop24dpapp:layout_constraintEnd_toEndOfparentapp:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toTopOfparentapp:srcCompatdrawable/logo1 /Viewandroid:idid/view2android:layout_width0dpandroid:layout_height320dpandroid:layout_marginTop24dpandroid:backgrounddrawable/login_viewapp:layout_constraintEnd_toStartOfid/guideline2app:layout_constraintStart_toStartOfid/guideline3app:layout_constraintTop_toBottomOfid/imageView3 /Buttonandroid:idid/login_buttonandroid:layout_width250dpandroid:layout_height55dpandroid:layout_marginBottom32dpandroid:backgrounddrawable/loginandroid:text立 即 登 录 android:textColor#fffandroid:textSize24spapp:layout_constraintBottom_toBottomOfid/view2app:layout_constraintEnd_toStartOfid/guideline2app:layout_constraintStart_toStartOfid/view2 /androidx.constraintlayout.widget.Guidelineandroid:idid/guideline2android:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:orientationverticalapp:layout_constraintGuide_percent0.9 /androidx.constraintlayout.widget.Guidelineandroid:idid/guideline3android:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:orientationverticalapp:layout_constraintGuide_percent0.1 /Viewandroid:idid/view3android:layout_width0dpandroid:layout_height45dpandroid:layout_marginTop40dpandroid:backgrounddrawable/login_countapp:layout_constraintEnd_toEndOfid/login_buttonapp:layout_constraintStart_toStartOfid/login_buttonapp:layout_constraintTop_toTopOfid/view2 /Viewandroid:idid/view4android:layout_width0dpandroid:layout_height45dpandroid:layout_marginTop24dpandroid:backgrounddrawable/login_countapp:layout_constraintEnd_toEndOfid/login_buttonapp:layout_constraintHorizontal_bias0.0app:layout_constraintStart_toStartOfid/login_buttonapp:layout_constraintTop_toBottomOfid/view3 /TextViewandroid:idid/textViewandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_marginTop24dpandroid:text忘 记 密 码app:layout_constraintStart_toStartOfid/view4app:layout_constraintTop_toBottomOfid/view4 /TextViewandroid:idid/login_registerandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text立 即 注 册app:layout_constraintBottom_toBottomOfid/textViewapp:layout_constraintEnd_toEndOfid/view4app:layout_constraintTop_toTopOfid/textView /ImageViewandroid:idid/imageViewandroid:layout_width20dpandroid:layout_height20dpapp:layout_constraintBottom_toBottomOfid/view4app:layout_constraintEnd_toEndOfid/imageView4app:layout_constraintTop_toTopOfid/view4app:srcCompatdrawable/mima /ImageViewandroid:idid/imageView4android:layout_width20dpandroid:layout_height20dpandroid:layout_marginStart16dpapp:layout_constraintBottom_toBottomOfid/view3app:layout_constraintStart_toStartOfid/view3app:layout_constraintTop_toTopOfid/view3app:srcCompatdrawable/zhanghao /Viewandroid:idid/view5android:layout_width100dpandroid:layout_height1dpandroid:layout_marginTop40dpandroid:background#fffapp:layout_constraintStart_toStartOfid/guideline3app:layout_constraintTop_toBottomOfid/view2 /Viewandroid:idid/view6android:layout_width100dpandroid:layout_height1dpandroid:background#fffapp:layout_constraintEnd_toStartOfid/guideline2app:layout_constraintTop_toTopOfid/view5 /TextViewandroid:idid/textView3android:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text其它方式登陆android:textColor#fffapp:layout_constraintBottom_toBottomOfid/view5app:layout_constraintEnd_toStartOfid/view6app:layout_constraintStart_toEndOfid/view5app:layout_constraintTop_toTopOfid/view5 /ImageViewandroid:idid/imageView6android:layout_width30dpandroid:layout_height30dpapp:layout_constraintBottom_toBottomOfid/imageView5app:layout_constraintEnd_toStartOfid/imageView7app:layout_constraintStart_toEndOfid/imageView5app:layout_constraintTop_toTopOfid/imageView5app:srcCompatdrawable/qq /ImageViewandroid:idid/imageView5android:layout_width30dpandroid:layout_height30dpandroid:layout_marginStart70dpandroid:layout_marginTop24dpapp:layout_constraintStart_toStartOfid/guideline3app:layout_constraintTop_toBottomOfid/view5app:srcCompatdrawable/weixin /ImageViewandroid:idid/imageView7android:layout_width30dpandroid:layout_height30dpandroid:layout_marginEnd70dpapp:layout_constraintBottom_toBottomOfid/imageView6app:layout_constraintEnd_toStartOfid/guideline2app:layout_constraintTop_toTopOfid/imageView6app:srcCompatdrawable/weibo /EditTextandroid:idid/userandroid:layout_width190dpandroid:layout_height0dpandroid:layout_marginStart5dpandroid:ems10android:background#eff4f2android:inputTypetextPersonNameandroid:hint请输入账号app:layout_constraintBottom_toBottomOfid/view3app:layout_constraintStart_toEndOfid/imageView4app:layout_constraintTop_toTopOfid/view3 /EditTextandroid:idid/passandroid:layout_width190dpandroid:layout_height0dpandroid:layout_marginStart5dpandroid:ems10android:background#eff4f2android:inputTypetextPasswordandroid:hint请输入密码app:layout_constraintBottom_toBottomOfid/view4app:layout_constraintStart_toEndOfid/imageViewapp:layout_constraintTop_toTopOfid/view4app:layout_constraintVertical_bias0.0 //androidx.constraintlayout.widget.ConstraintLayout
Register.xml代码
?xml version1.0 encodingutf-8?
androidx.constraintlayout.widget.ConstraintLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:background#f9d7e7tools:context.Register.RegisterActivityImageViewandroid:idid/imageView3android:layout_width200dpandroid:layout_height150dpandroid:layout_marginTop40dpapp:layout_constraintEnd_toEndOfparentapp:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toTopOfparentapp:srcCompatdrawable/logo1 /Viewandroid:idid/view2android:layout_width0dpandroid:layout_height270dpandroid:backgrounddrawable/login_viewapp:layout_constraintBottom_toBottomOfparentapp:layout_constraintEnd_toStartOfid/guideline4app:layout_constraintHorizontal_bias0.0app:layout_constraintStart_toStartOfid/guidelineapp:layout_constraintTop_toTopOfid/imageView3app:layout_constraintVertical_bias0.501 /Viewandroid:idid/view3android:layout_width250dpandroid:layout_height45dpandroid:layout_marginTop32dpandroid:backgrounddrawable/login_countapp:layout_constraintEnd_toStartOfid/guideline4app:layout_constraintStart_toStartOfid/view2app:layout_constraintTop_toTopOfid/view2 /Viewandroid:idid/view4android:layout_width0dpandroid:layout_height45dpandroid:layout_marginTop32dpandroid:backgrounddrawable/login_countapp:layout_constraintEnd_toEndOfid/view3app:layout_constraintStart_toStartOfid/view3app:layout_constraintTop_toBottomOfid/view3 /androidx.constraintlayout.widget.Guidelineandroid:idid/guidelineandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:orientationverticalapp:layout_constraintGuide_percent0.1 /androidx.constraintlayout.widget.Guidelineandroid:idid/guideline4android:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:orientationverticalapp:layout_constraintGuide_percent0.9 /ImageViewandroid:idid/imageViewandroid:layout_width20dpandroid:layout_height20dpandroid:layout_marginStart8dpapp:layout_constraintBottom_toBottomOfid/view3app:layout_constraintStart_toStartOfid/view3app:layout_constraintTop_toTopOfid/view3app:srcCompatdrawable/mima /ImageViewandroid:idid/imageView4android:layout_width20dpandroid:layout_height20dpapp:layout_constraintBottom_toBottomOfid/view4app:layout_constraintStart_toStartOfid/imageViewapp:layout_constraintTop_toTopOfid/view4app:srcCompatdrawable/zhanghao /Buttonandroid:idid/register_buttonandroid:layout_width250dpandroid:layout_height55dpandroid:text立 即 注 册android:layout_marginBottom32dpandroid:backgrounddrawable/loginapp:layout_constraintBottom_toBottomOfid/view2app:layout_constraintEnd_toEndOfid/view2app:layout_constraintHorizontal_bias0.497app:layout_constraintStart_toStartOfid/view2 /EditTextandroid:idid/username_edittextandroid:layout_width190dpandroid:layout_height0dpandroid:layout_marginStart5dpandroid:ems10android:hint请输入账号android:background#eff4f2android:inputTypetextPersonNameapp:layout_constraintBottom_toBottomOfid/view3app:layout_constraintStart_toEndOfid/imageViewapp:layout_constraintTop_toTopOfid/view3 /EditTextandroid:idid/password_edittextandroid:layout_width190dpandroid:layout_height0dpandroid:layout_marginStart5dpandroid:ems10android:hint请输入密码android:background#eff4f2android:inputTypetextPasswordapp:layout_constraintBottom_toBottomOfid/view4app:layout_constraintStart_toEndOfid/imageView4app:layout_constraintTop_toTopOfid/view4 //androidx.constraintlayout.widget.ConstraintLayout LoginActivity完整代码
package com.example.music.Login;import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;import androidx.appcompat.app.AppCompatActivity;import com.example.music.MainActivity;
import com.example.music.R;
import com.example.music.Register.RegisterActivity;
import com.example.music.Data.DatabaseHelper;public class LoginActivity extends AppCompatActivity {private TextView loginRegister;private EditText user;private EditText pass;private Button mLoginButton;private DatabaseHelper mDatabaseHelper;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_login);user findViewById(R.id.user);pass findViewById(R.id.pass);mLoginButton findViewById(R.id.login_button);loginRegister findViewById(R.id.login_register);mDatabaseHelper new DatabaseHelper(this);loginRegister.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {Intent intent new Intent(LoginActivity.this, RegisterActivity.class);startActivity(intent);}});mLoginButton.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {String username user.getText().toString().trim();String password pass.getText().toString().trim();if (username.isEmpty() || password.isEmpty()) {Toast.makeText(getApplicationContext(), 请输入账号或密码, Toast.LENGTH_SHORT).show();return;}boolean result mDatabaseHelper.checkUser(username, password);if (result) {Toast.makeText(getApplicationContext(), 登陆成功, Toast.LENGTH_SHORT).show();Intent intent new Intent(LoginActivity.this, MainActivity.class);startActivity(intent);} else {Toast.makeText(getApplicationContext(), 账号或密码错误, Toast.LENGTH_SHORT).show();}}});}
} RegisterActivity完整代码
package com.example.music.Register;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;import com.example.music.Login.LoginActivity;
import com.example.music.R;
import com.example.music.Data.DatabaseHelper;public class RegisterActivity extends AppCompatActivity {private EditText mUserNameEditText;private EditText mPasswordEditText;private Button registerButton;private DatabaseHelper mDatabaseHelper;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_register);mUserNameEditText findViewById(R.id.username_edittext);mPasswordEditText findViewById(R.id.password_edittext);registerButton findViewById(R.id.register_button);mDatabaseHelper new DatabaseHelper(this);registerButton.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {String username mUserNameEditText.getText().toString().trim();String password mPasswordEditText.getText().toString().trim();if (username.isEmpty() || password.isEmpty()) {Toast.makeText(getApplicationContext(), 请输入账号或密码, Toast.LENGTH_SHORT).show();return;}boolean result mDatabaseHelper.insertData(username, password);if (result) {Toast.makeText(getApplicationContext(), 注册成功, Toast.LENGTH_SHORT).show();Intent intent new Intent(RegisterActivity.this, LoginActivity.class);startActivity(intent);finish();} else {Toast.makeText(getApplicationContext(), 注册失败, Toast.LENGTH_SHORT).show();}}});}
}
2.音乐列表页面 主要用于音乐的显示以及点击对应的音乐跳转到对应的音乐播放页面。 Activity完整代码
package com.example.music;import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
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.TextView;import androidx.fragment.app.Fragment;import com.example.music.Music.MusicActivity;public class SongPage extends Fragment {//声明视图变量viewprivate View view;//在这里添加歌曲名public String[] songname {Innocence, 刚刚好,不用去猜};private String[] name{A R L,薛之谦,Jony J};//在这里添加歌曲图片public static int[] icons {R.drawable.img_01, R.drawable.img_02, R.drawable.img_03};Overridepublic View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {view inflater.inflate(R.layout.music_list, null);//1、创建并绑定列表ListView listView view.findViewById(R.id.lv);//2、创建适配器对象MyBaseAdapter adapter new MyBaseAdapter();//3、给列表设置适配器listView.setAdapter(adapter);//设置列表条目监听器listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {Overridepublic void onItemClick(AdapterView? parent, View view, int position, long id) {//创建Intent对象启动音乐播放界面Intent intent new Intent(SongPage.this.getContext(), MusicActivity.class);//将数据存入Intent对象利用键值对intent.putExtra(name, name[position]);intent.putExtra(songname, songname[position]);intent.putExtra(position, String.valueOf(position));//开启意图进行跳转startActivity(intent);}});return view;}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(SongPage.this.getContext(), R.layout.item_music, null);TextView songName view.findViewById(R.id.song_name);ImageView songPic view.findViewById(R.id.song_pic);TextView name1view.findViewById(R.id.name);songName.setText(songname[i]);name1.setText(name[i]);songPic.setImageResource(icons[i]);return view;}}}相关的xml代码
?xml version1.0 encodingutf-8?
androidx.constraintlayout.widget.ConstraintLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:padding15dpImageViewandroid:idid/song_picandroid:layout_width86dpandroid:layout_height86dpandroid:srcdrawable/img_01app:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toTopOfparent /TextViewandroid:idid/song_nameandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_marginStart8dpandroid:layout_marginTop16dpandroid:text歌曲android:textColor#000android:textSize20spapp:layout_constraintStart_toEndOfid/song_picapp:layout_constraintTop_toTopOfid/song_pic /TextViewandroid:idid/nameandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_marginTop8dpandroid:text歌曲android:textColor#000android:textSize14spapp:layout_constraintStart_toStartOfid/song_nameapp:layout_constraintTop_toBottomOfid/song_name /ImageViewandroid:idid/song_enterandroid:layout_width30dpandroid:layout_height30dpandroid:layout_marginEnd8dpandroid:srcdrawable/song_playapp:layout_constraintBottom_toBottomOfid/song_picapp:layout_constraintEnd_toEndOfparentapp:layout_constraintTop_toTopOfid/song_pic //androidx.constraintlayout.widget.ConstraintLayout
2.音乐播放功能 用于播放音乐对音乐进行暂停上一首、下一首功能的实现。 具体MusicActivity代码
public class MusicActivity extends AppCompatActivity implements View.OnClickListener{//定义歌曲名称的数组public String[] musicName{Innocence, 刚刚好,不用去猜};private static SeekBar sb;//定义进度条private static TextView tv_progress, tv_total, name_song;//定义开始和总时长,歌曲名控件private ObjectAnimator animator;//定义旋转的动画private MusicService.MusicControl musicControl;//音乐控制类private Button play; //播放按钮private Button pause; //暂停按钮private Button con; //继续播放按钮private Button pre; //上一首按钮private Button next; //下一首按钮private ImageView exit; //退出按钮private ImageView iv_music; //歌手图片框Intent intent1, intent2; //定义两个意图MyServiceConn conn; //服务连接private boolean isUnbind false;//记录服务是否被解绑public int change 0; //记录下标的变化值Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_music);//去除标题栏ActionBar actionBar getSupportActionBar();if(actionBar! null){actionBar.hide();}//获得意图intent1 getIntent();//初始化initView();}//初始化private void initView(){//依次绑定控件tv_progress findViewById(R.id.tv_progress);tv_total findViewById(R.id.tv_total);sb findViewById(R.id.sb);name_song findViewById(R.id.song_name);iv_music findViewById(R.id.iv_music);play findViewById(R.id.btn_play);pause findViewById(R.id.btn_pause);con findViewById(R.id.btn_continue_play);pre findViewById(R.id.btn_pre);next findViewById(R.id.btn_next);exit findViewById(R.id.btn_exit);//依次设置监听器play.setOnClickListener(this);pause.setOnClickListener(this);con.setOnClickListener(this);pre.setOnClickListener(this);next.setOnClickListener(this);exit.setOnClickListener(this);//创建意图对象intent2 new Intent(this, MusicService.class);conn new MyServiceConn();//创建服务连接对象bindService(intent2, conn,BIND_AUTO_CREATE);//绑定服务//从歌曲列表传过来的歌曲名String name intent1.getStringExtra(songname);//设置歌曲名显示name_song.setText(name);//定义歌曲列表传过来的下标positionString position intent1.getStringExtra(position);//将字符串转化为整型iint i parseInt(position);//图像框设置为frag1里面的图标数组下标为iiv_music.setImageResource(SongPage.icons[i]);//为滑动条添加事件监听sb.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {RequiresApi(api Build.VERSION_CODES.KITKAT)Overridepublic void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {//当滑动条到末端时将message对象发送出去if (progress sb.getMax()){}}Overridepublic void onStartTrackingTouch(SeekBar seekBar) {//滑动条开始滑动时调用}Overridepublic void onStopTrackingTouch(SeekBar seekBar) {//滑动条停止滑动时调用//根据拖动的进度改变音乐播放进度int progress seekBar.getProgress();//获取seekBar的进度musicControl.seekTo(progress);//改变播放进度}});animator ObjectAnimator.ofFloat(iv_music,rotation,0f,360.0f);animator.setDuration(10000);//动画旋转一周的时间为10秒animator.setInterpolator(new LinearInterpolator());//匀速animator.setRepeatCount(-1);//-1表示设置动画无限循环}//歌曲进度条的消息机制public static Handler handler new Handler(){//创建消息处理器对象//在主线程中处理从子线程发送过来的消息Overridepublic void handleMessage(Message msg){Bundle bundle msg.getData();//获取从子线程发送过来的音乐播放进度int duration bundle.getInt(duration);int currentPosition bundle.getInt(currentPosition);sb.setMax(duration);sb.setProgress(currentPosition);//歌曲总时长单位为毫秒int minute duration/1000/60;int second duration/1000%60;String strMinute null;String strSecond null;if(minute 10){//如果歌曲的时间中的分钟小于10strMinute 0 minute;//在分钟的前面加一个0}else{strMinute minute ;}if (second 10){//如果歌曲中的秒钟小于10strSecond 0 second;//在秒钟前面加一个0}else{strSecond second ;}tv_total.setText(strMinute : strSecond);//歌曲当前播放时长minute currentPosition/1000/60;second currentPosition/1000%60;if(minute 10){//如果歌曲的时间中的分钟小于10strMinute 0 minute;//在分钟的前面加一个0}else{strMinuteminute ;}if (second 10){//如果歌曲中的秒钟小于10strSecond 0 second;//在秒钟前面加一个0}else{strSecond second ;}tv_progress.setText(strMinute : strSecond);}};//用于实现连接服务class MyServiceConn implements ServiceConnection {Overridepublic void onServiceConnected(ComponentName name, IBinder service){musicControl(MusicService.MusicControl) service;}Overridepublic void onServiceDisconnected(ComponentName name){}}//未解绑则解绑private void unbind(boolean isUnbind){if(!isUnbind){//判断服务是否被解绑musicControl.pausePlay();//暂停播放音乐unbindService(conn);//解绑服务}}RequiresApi(api Build.VERSION_CODES.KITKAT)Overridepublic void onClick(View v) {//获取歌曲名的下标字符串String index intent1.getStringExtra(position);//将字符串转为整数int i parseInt(index);switch (v.getId()){case R.id.btn_play://播放按钮点击事件play.setVisibility(View.INVISIBLE);musicControl.play(i);animator.start();break;//这里musicName.length-1表示的最后一首歌的下标即歌曲总数-1case R.id.btn_pre://播放上一首if((i change) 1) {change musicName.length - 1 - i;iv_music.setImageResource(SongPage.icons[i change]);name_song.setText(musicName[i change]);musicControl.play(i change);pause.setVisibility(View.VISIBLE);animator.start();break;} else {change--;iv_music.setImageResource(SongPage.icons[i change]);name_song.setText(musicName[i change]);musicControl.play(i change);pause.setVisibility(View.VISIBLE);animator.start();break;}case R.id.btn_next://播放下一首if((i change) musicName.length - 1) {change -i;iv_music.setImageResource(SongPage.icons[i change]);name_song.setText(musicName[i change]);musicControl.play(i change);pause.setVisibility(View.VISIBLE);animator.start();break;} else {change;iv_music.setImageResource(SongPage.icons[i change]);name_song.setText(musicName[i change]);musicControl.play(i change);pause.setVisibility(View.VISIBLE);animator.start();break;}case R.id.btn_pause://暂停按钮点击事件pause.setVisibility(View.INVISIBLE);con.setVisibility(View.VISIBLE);musicControl.pausePlay();animator.pause();break;case R.id.btn_continue_play://继续播放按钮点击事件con.setVisibility(View.INVISIBLE);pause.setVisibility(View.VISIBLE);musicControl.continuePlay();animator.start();break;case R.id.btn_exit://退出按钮点击事件unbind(isUnbind);isUnbind true;finish();break;}}Overrideprotected void onDestroy(){super.onDestroy();unbind(isUnbind);//解绑服务}
}
相关的xml文件代码
?xml version1.0 encodingutf-8?
androidx.constraintlayout.widget.ConstraintLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:background#f9d7e7android:orientationverticaltools:context.Music.MusicActivityImageViewandroid:idid/btn_exitandroid:layout_width20dpandroid:layout_height20dpandroid:layout_marginStart16dpandroid:layout_marginTop24dpapp:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toTopOfparentapp:srcCompatdrawable/back /TextViewandroid:idid/song_nameandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_gravitycenterandroid:text光年之外android:textColor#000android:textSize24spapp:layout_constraintBottom_toBottomOfid/btn_exitapp:layout_constraintEnd_toEndOfparentapp:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toTopOfid/btn_exit /ImageViewandroid:idid/iv_musicandroid:layout_width250dpandroid:layout_height250dpandroid:layout_marginTop80dpandroid:srcdrawable/img_01app:layout_constraintEnd_toEndOfparentapp:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toBottomOfid/btn_exit /SeekBarandroid:idid/sbandroid:layout_width250dpandroid:layout_height20dpandroid:layout_marginTop80dpapp:layout_constraintEnd_toEndOfparentapp:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toBottomOfid/iv_music /TextViewandroid:idid/tv_progressandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_marginEnd5dpandroid:text00:00app:layout_constraintBottom_toBottomOfid/sbapp:layout_constraintEnd_toStartOfid/sbapp:layout_constraintTop_toTopOfid/sb /TextViewandroid:idid/tv_totalandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_marginStart5dpandroid:text00:00app:layout_constraintBottom_toBottomOfid/sbapp:layout_constraintStart_toEndOfid/sbapp:layout_constraintTop_toTopOfid/sb /Buttonandroid:idid/btn_continue_playandroid:layout_width60dpandroid:layout_height60dpandroid:backgrounddrawable/playapp:layout_constraintBottom_toBottomOfid/btn_preapp:layout_constraintEnd_toStartOfid/btn_nextapp:layout_constraintStart_toEndOfid/btn_preapp:layout_constraintTop_toTopOfid/btn_pre /Buttonandroid:idid/btn_pauseandroid:layout_width60dpandroid:layout_height60dpandroid:backgrounddrawable/pauseapp:layout_constraintBottom_toBottomOfid/btn_nextapp:layout_constraintEnd_toStartOfid/btn_nextapp:layout_constraintStart_toEndOfid/btn_preapp:layout_constraintTop_toTopOfid/btn_next /Buttonandroid:idid/btn_preandroid:layout_width40dpandroid:layout_height40dpandroid:layout_marginStart24dpandroid:backgrounddrawable/preapp:layout_constraintBottom_toBottomOfid/btn_nextapp:layout_constraintStart_toStartOfid/tv_progressapp:layout_constraintTop_toTopOfid/btn_next /Buttonandroid:idid/btn_nextandroid:layout_width40dpandroid:layout_height40dpandroid:layout_marginTop100dpandroid:layout_marginEnd24dpandroid:backgrounddrawable/nextapp:layout_constraintEnd_toEndOfid/tv_totalapp:layout_constraintTop_toBottomOfid/tv_total /Buttonandroid:idid/btn_playandroid:layout_width60dpandroid:layout_height60dpandroid:backgrounddrawable/playapp:layout_constraintBottom_toBottomOfid/btn_preapp:layout_constraintEnd_toStartOfid/btn_nextapp:layout_constraintStart_toEndOfid/btn_preapp:layout_constraintTop_toTopOfid/btn_pre //androidx.constraintlayout.widget.ConstraintLayout
三、源码获取
✨还可以关注我的公众号《编程乐学》菜单栏有很多优质的资料等你来学习。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/924485.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!