音乐播放器

一.开发需求
这是一个可以登录的音乐播放器,主要功能有登录,注册,和歌曲的选择,暂停,播放和重新开始。主要用到的页面跳转,事件的定义等方法。
二.代码及注释

<?xml version="1.0" encoding="utf-8"?>

<TextView
    android:id="@+id/text1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:text="音频播放器"
    android:textSize="40sp"/>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_marginTop="30sp"
    android:layout_gravity="center">

    <ImageButton
        android:id="@+id/Stop"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:src="@drawable/music_stop"  />

    <ImageButton
        android:id="@+id/Start"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_marginLeft="20sp"
        android:src="@drawable/music_play"   />

    <ImageButton
        android:id="@+id/Pause"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_marginLeft="20sp"
        android:src="@drawable/music_pause"  />
</LinearLayout>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_marginTop="30sp"
    android:orientation="vertical">

    <RadioGroup
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <RadioButton
            android:id="@+id/r1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="歌曲a"
            android:textSize="25dp"/>

        <RadioButton
            android:id="@+id/r2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="歌曲b"
            android:textSize="25dp"/>

        <RadioButton
            android:id="@+id/r3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="歌曲c"
            android:textSize="25dp"/>

    </RadioGroup>
</LinearLayout>

<TextView
    android:id="@+id/news_item_content_text_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="100dp"
    android:layout_marginTop="200dp"
    android:text="登录成功"
    android:textSize="50dp" />

package com.example.exam;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.content.Intent;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.app.Activity;
import android.media.MediaPlayer;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.RadioButton;
import android.widget.TextView;
import com.example.exam.R;

public class MainActivity extends AppCompatActivity {

RadioButton r1, r2, r3;
TextView txt;
ImageButton mStopButton, mStartButton, mPauseButton;
MediaPlayer mMediaPlayer;
int res_file1 = R.raw.a;
int res_file2 = R.raw.b;
int res_file3 = R.raw.c;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    TextView userName = findViewById(R.id.userName);
    TextView Password = findViewById(R.id.passwd);
    Button btn_register = findViewById(R.id.btn_register);
    Button btn_login = findViewById(R.id.btnLogin);
    r1 = (RadioButton) findViewById(R.id.r1);
    r2 = (RadioButton) findViewById(R.id.r2);
    r3 = (RadioButton) findViewById(R.id.r3);
    txt = (TextView) findViewById(R.id.text1);
    mStopButton = (ImageButton) findViewById(R.id.Stop);
    mStartButton = (ImageButton) findViewById(R.id.Start);
    mPauseButton = (ImageButton) findViewById(R.id.Pause);
    mStopButton.setOnClickListener(new mStopClick());
    mStartButton.setOnClickListener(new mStartClick());
    mPauseButton.setOnClickListener(new mPauseClick());

    String username = getIntent().getStringExtra("username");
    String password = getIntent().getStringExtra("psw");
    userName.setText(username);
    Password.setText(password);

    //注册控件的点击事件
    btn_register.setOnClickListener( new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //为了跳转到注册界面,并实现注册功能
            Intent intent=new Intent(MainActivity.this,RegisterActivity.class);
            startActivity(intent);
        }
    });

    //登录按钮的点击事件
    btn_login.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent=new Intent(MainActivity.this,LoginActivity.class);
            startActivity(intent);
        }
    });
}
class mStopClick implements OnClickListener {
    @Override
    public void onClick(View v) {
        /* 是否正在播放 */
        if (mMediaPlayer.isPlaying()) {
            //重置MediaPlayer到初始状态
            mMediaPlayer.reset();
        }
    }

}
/* 播放按钮事件  */
class mStartClick implements OnClickListener {
    @Override
    public void onClick(View v) {
        if (r1.isChecked()) {
            if (mMediaPlayer.isPlaying()) {
                //重置MediaPlayer到初始状态
                mMediaPlayer.reset();
                mMediaPlayer.release();
            }
            try {
                mMediaPlayer = MediaPlayer.create(MainActivity.this, res_file1);
                mMediaPlayer.start();
            } catch (Exception e) {
                Log.i("ch1", "res err ....");
            }
        }
        if (r2.isChecked()) {
            if (mMediaPlayer.isPlaying()) {
                //重置MediaPlayer到初始状态
                mMediaPlayer.reset();
                mMediaPlayer.release();
            }
            try {
                mMediaPlayer = MediaPlayer.create(MainActivity.this, res_file2);
                mMediaPlayer.start();
            } catch (Exception e) {
                Log.i("ch1", "res err ....");
            }
        }
        if (r3.isChecked()) {
            if (mMediaPlayer.isPlaying()) {
                //重置MediaPlayer到初始状态
                mMediaPlayer.reset();
                mMediaPlayer.release();
            }
            try {
                mMediaPlayer = MediaPlayer.create(MainActivity.this, res_file3);
                mMediaPlayer.start();
            } catch (Exception e) {
                Log.i("ch1", "res err ....");
            }
        }
    }
}
/* 暂停按钮事件  */
class mPauseClick implements OnClickListener {
    @Override
    public void onClick(View v) {
        if (mMediaPlayer.isPlaying()) {
            /* 暂停 */
            mMediaPlayer.pause();
        } else {
            /* 开始播放 */
            mMediaPlayer.start();
        }
    }
}

}

<?xml version="1.0" encoding="utf-8"?>

<TextView
    android:id="@+id/lable"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity=""
    android:text="登录"
    android:layout_marginTop="200px"
    android:layout_marginLeft="20dp"
    android:textSize="40sp"
    android:textColor="#5767de"
    ></TextView>



<EditText
    android:id="@+id/userName"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
    android:layout_marginLeft="20dp"
    android:hint="请输入你的用户名"/>

<EditText

    android:id="@+id/passwd"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="18dp"
    android:layout_marginLeft="20dp"
    android:hint="请输入你的密码"/>



<Button
    android:id="@+id/btnLogin"
    android:layout_width="fill_parent"
    android:layout_height="40dp"
    android:layout_gravity="center_horizontal"
    android:layout_marginLeft="35dp"
    android:layout_marginRight="35dp"
    android:layout_marginTop="15dp"
    android:text="登 录"
    android:textColor="@android:color/holo_blue_dark"
    android:textSize="18sp"/>

<Button
    android:id="@+id/btn_register"
    android:layout_width="fill_parent"
    android:layout_height="40dp"
    android:layout_gravity="center_horizontal"
    android:layout_marginLeft="35dp"
    android:layout_marginRight="35dp"
    android:layout_marginTop="15dp"
    android:text="注 册"
    android:textColor="@android:color/holo_blue_dark"
    android:textSize="18sp"/>

package com.example.exam;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

import com.example.exam.R;

public class LoginActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
}

}

<?xml version="1.0" encoding="utf-8"?>

<EditText
    android:id="@+id/userName"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="48dp"
    android:layout_marginLeft="40dp"
    android:hint="请输入你的用户名"/>

<EditText

    android:id="@+id/passwd"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="48dp"
    android:layout_marginLeft="40dp"
    android:hint="请输入你的密码"/>

<EditText
    android:id="@+id/passwd2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="48dp"
    android:layout_marginLeft="40dp"
    android:hint="确认密码"/>

<Button
    android:id="@+id/btn_register"
    android:layout_width="fill_parent"
    android:layout_height="40dp"
    android:layout_gravity="center_horizontal"
    android:layout_marginLeft="35dp"
    android:layout_marginRight="35dp"
    android:layout_marginTop="15dp"
    android:text="注 册"
    android:textColor="@android:color/holo_blue_dark"
    android:textSize="18sp"/>
<Button
    android:id="@+id/to_login"
    android:layout_width="fill_parent"
    android:layout_height="40dp"
    android:layout_gravity="center_horizontal"
    android:layout_marginLeft="35dp"
    android:layout_marginRight="35dp"
    android:layout_marginTop="15dp"
    android:text="返回登录"
    android:textColor="@android:color/holo_blue_dark"
    android:textSize="18sp"/>

package com.example.exam;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.content.Intent;
import android.content.SharedPreferences;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.example.exam.R;

public class RegisterActivity extends AppCompatActivity {
Button btn_register;//注册按钮
Button to_login; //返回按钮
EditText user_name,psw1,psw2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_register);
    init();
}
private void init() {
    btn_register=findViewById(R.id.btn_register);
    to_login=findViewById(R.id.to_login);

    user_name=findViewById(R.id.userName);
    psw1=findViewById(R.id.passwd);
    psw2=findViewById(R.id.passwd2);
    //返回按钮
    to_login.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //为了跳转到登录界面
            Intent intent=new Intent(RegisterActivity.this,MainActivity.class);
            startActivity(intent);
        }
    });
    //注册按钮
    btn_register.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent=new Intent(RegisterActivity.this,MainActivity.class);
            intent.putExtra("username",user_name.getText().toString());
            intent.putExtra("psw",psw1.getText().toString());
            startActivity(intent);
        }
    });
}

}
三.运行界面
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

四.项目总结
在这次项目中我遇到了很多问题,做出如下总结。首先是R的标红,我在更改程序的时候用文本文件将代码复制了一份,当代码出问题,我将之前的代码复制上去时发现R被标红了,在我查阅大量资料发现,R标红是因为复制代码上去软件没有将其编译,这时将代码重新手打上去就行。其次我还在运行的过程中出现代码没有问题但是在手机的模拟器上面运行失败,这个问题解决就需要我们换一个新的模拟器有时这样就可以解决问题。接着就是对于页面跳转问题需要特别注意的就是不要忘记设置初始页面,不然在多页面的app中会造成程序出现问题。即在AndroidManifest.xml中将自己选取的初始页面标记。最后最重要的就是写代码时注意规范,将相同类型的事件放在一起,为文件取名最好符合功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值