Android开发—-简单几步教你制作一个简易的音乐播放器

Android开发—-简单几步教你制作一个简易的音乐播放器前言:本博文只教你编程的思想,就举一个简单的例子来实现我们的简易的音乐播放器,大家不喜勿喷啊友情提示:本博文用到的是AndroidStudio进行开发的,软件安装教程:AndroidStudio安装教程:文章目录:一.缓冲界面实现:二:播放音乐界面:一.缓冲界面实现:在前面的博客中也讲到了关于界面缓冲跳转的方法,详情请查:3种方式实现界面缓冲,为什么要设置这个呢?自我感觉当用户点进应用后,至少有一个缓冲时间,不仅仅是让用户缓冲也是为了让程序内部进行缓冲缓冲,话不多说一起来看看设计:当然首先是界

大家好,又见面了,我是你们的朋友全栈君。

前言:本博文只教你编程的思想,就举一个简单的例子来实现我们的简易的音乐播放器,大家不喜勿喷啊
友情提示:本博文用到的是Android Studio进行开发的,软件安装教程:Android Studio安装教程:

一.缓冲界面实现:

在前面的博客中也讲到了关于界面缓冲跳转的方法,详情请查:3种方式实现界面缓冲,为什么要设置这个呢?自我感觉当用户点进应用后,至少有一个缓冲时间,不仅仅是让用户缓冲也是为了让程序内部进行缓冲缓冲,话不多说一起来看看设计:

当然首先是界面的设计:在本次设计中用到了:LinearLayout布局方式以及TextViewimageview控件,为什么要用这种布局方式呢?因为这种方式有利于我们的排版,对控件可以更好地选取合适的位置,当然各人有各人的方式布局,只要不失美观性即可:

XML代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/bcc" android:orientation="vertical" tools:context=".MainActivity">

    <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginBottom="50dp" android:fontFamily="cursive" android:text="钉钉音乐播放器" android:textColor="?attr/colorControlActivated" />

    <ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="240dp" android:layout_gravity="center" app:srcCompat="@drawable/bc" />

    <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="钉钉音乐" android:textColor="?attr/colorControlActivated" android:textSize="36sp" />

    <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="200dp" android:text="----不止是专注于学习" android:textColor="@android:color/holo_green_dark" android:textSize="17sp" />

</LinearLayout>

界面效果:
在这里插入图片描述
内容都可以进行更改哦,我只是简单的举个例子呀

XML只是设计了布局方面的问题,但是主要功能还在java代码中,走一起来瞅瞅:

Java代码:
博主写了三种缓冲方式,你们自己感觉哪个方便就可以用哪个哦!

package com.example.musicplayer;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import java.util.Timer;
import java.util.TimerTask;

public class MainActivity extends AppCompatActivity { 
   
    private TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) { 
   
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
               final Intent intent = new Intent(this, play.class); //就是要跳转的哪个界面
// Timer timer = new Timer();
// TimerTask timerTask = new TimerTask() { 
   
// @Override
// public void run() { 
   
// startActivity(intent);
// }
// };
            Toast.makeText(this,"稍等页面将在3秒后进行跳转",Toast.LENGTH_LONG).show();  
            //提示信息,在屏幕底部,显示提示信息
// timer.schedule(timerTask, 3000);
            new Handler().postDelayed(new Runnable() { 
   
                @Override
                public void run() { 
   
                    startActivity(intent);
                    finish();
                }
            },3000);

// new Thread(new Runnable() { 
   
// @Override
// public void run() { 
   
// try { 
   
// Thread.sleep(3000);
// startActivity(intent);
// finish();
// } catch (InterruptedException e) { 
   
// e.printStackTrace();
// }
// }
// }).start();
        }
    }

二:播放音乐界面:

在音乐播放界面,我是用的是布局的嵌套,LinearLayout布局中进行嵌套LinearLayout布局,加以TextViewimageview控件,也不知道我的审美怎样,咱们做的是最简易的音乐播放器,我就弄得稍微简单,方便通俗易懂,咱们代码中解释:

XML代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/black" android:orientation="vertical" tools:context=".play">

    <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="钉钉音乐播放界面" android:textColor="@android:color/holo_orange_dark" />

    <ImageView android:id="@+id/imageView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginTop="50dp" android:background="@android:color/black" app:srcCompat="@drawable/bc" />

    <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginTop="50dp" android:background="?attr/colorButtonNormal" android:paddingTop="50dp">

        <ImageButton android:id="@+id/imageButton" android:layout_width="100dp" android:layout_height="100dp" android:layout_marginLeft="50dp" android:onClick="Bofang" app:srcCompat="@drawable/music_play" />

        <ImageButton android:id="@+id/imageButton2" android:layout_width="100dp" android:layout_height="100dp" android:layout_marginLeft="70dp" android:layout_marginBottom="40dp" android:onClick="Zhanting" app:srcCompat="@drawable/music_stop" />
    </LinearLayout>
</LinearLayout>

其实比较重要的就是这个android:onClick="Bofang" android:onClick="Zhanting",给两个图片控件设置单击事件,button大家熟悉吧,最常用的就是click事件了,下面咱们来看看这个界面的大体:
在这里插入图片描述
其实哪两个按钮一个是播放加暂停音乐,一个是重新开始播放音乐,其余的控件基本没啥用,主要为了美观,嘻嘻
下面看主程序运行效果实现代码:(一切解释在代码中哦)
Java代码:

package com.example.musicplayer;

import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.media.Image;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.Display;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;

public class play extends AppCompatActivity implements View.OnClickListener { 
   
ImageButton bofang,zhanting;    //实例化两个照片按钮对象
MediaPlayer mediaPlayer;     //音乐播放的实例
    @Override
    protected void onCreate(Bundle savedInstanceState) { 
   
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_play);
        bofang=findViewById(R.id.imageButton);   //进行绑定
        zhanting=findViewById(R.id.imageButton2);   //进行绑定
        mediaPlayer=MediaPlayer.create(this,R.raw.shaonian);
        mediaPlayer.setLooping(true);
    }

    public void Bofang(View view) { 
   
        try { 
   
            if (!mediaPlayer.isPlaying()) { 
   
                mediaPlayer.start();
                bofang.setImageResource(R.drawable.music_pause);  //当播放暂时的图片
            } else { 
   
                mediaPlayer.pause();
                bofang.setImageResource(R.drawable.music_play);  //开始播放时的图片
            }
        } catch (Exception e) { 
    e.printStackTrace();}
    }

    public void Zhanting(View view) { 
   
        mediaPlayer.reset();
        try { 
   
            mediaPlayer=MediaPlayer.create(this,R.raw.shaonian);   //点击重新播放时,重新创建播放实例,播放的音乐路径
            mediaPlayer.setLooping(true);
        }
       catch (Exception e){ 
   e.printStackTrace();}
        bofang.setImageResource(R.drawable.music_play);
    }

    @Override
    public void onClick(View v) { 
   
        try { 
   
            if (!mediaPlayer.isPlaying()) { 
   
                mediaPlayer.start();
                bofang.setImageResource(R.drawable.music_pause);
            } else { 
   
                mediaPlayer.pause();
                bofang.setImageResource(R.drawable.music_play);
            }
        } catch (Exception e) { 
    e.printStackTrace();}
    }
}

哦,对了差点忘记了,这个图片的资源全部在这儿哦!
在这里插入图片描述


这样简单地一个音乐播放器就做好了,喜欢的朋友可以看看,觉得那块有问题了可以在评论区打出来,大家一块研究研究呀,谢谢大家喽?

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160596.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux运维面试题大厂,大厂Linux运维面试题详解「建议收藏」

    linux运维面试题大厂,大厂Linux运维面试题详解「建议收藏」大厂面试题:网络基础类面试题01.Linux运维经典面试题_网络基础-视频介绍02.Linux运维经典面试题_网络基础-面试题103.Linux运维经典面试题_网络基础-面试题204.Linux运维经典面试题_网络基础-面试题3Linux系统管理类面试题05.Linux运维经典面试题_Linux系统管理类-权限优化06.Linux运维经典面试题_Linux系统管理类-备份策略07.Linux运维经…

    2022年5月27日
    35
  • python如何安装matplotlib.pyplot_matplotlib中文

    python如何安装matplotlib.pyplot_matplotlib中文首先,一些博文上说可以在pycharm自动安装,也就是:File–Setting–ProjectInterpreter–±-输入指定模块安装,这对于社区版或教育版真的不行,好吗。安装的思路比较靠谱的,也是自己安装成功的方法。第一步:在官网上下载指定安装包:官网模块包:https://pypi.org/project需要什么模块就下载啥,需要注意的是与你的python版本一致(至于怎么一致,可以…

    2022年8月27日
    8
  • win7显示器亮度怎么调_虚拟机外接显示器

    win7显示器亮度怎么调_虚拟机外接显示器很久没有继续研究wddmhook了,最后一次研究还在3年前,不得不说虽然应用的少,但是wddmhook却是很有技术含量的一项技术,而且实用性很高,我们除了做虚拟显示器还能做很多的东西,比如高效的截屏(因为直接从驱动层面截屏,所以效率和实现效果秒杀mirrordriver和DXGI)、视频重定向(视频硬件加速的时候可以直接获取原始码流)、修改原始的显示器厂商信息、修改显示器支持分辨率,等等骚操作wddmhook都可以实现。去年,深圳某硬件公司找到我,他们正在做usb转HDMI或者USB转VGA的硬件

    2022年8月21日
    5
  • pytest fixtures_pytest conftest.py文件

    pytest fixtures_pytest conftest.py文件fixture的优势Pytest的fixture相对于传统的xUnit的setup/teardown函数做了显著的改进:命名方式灵活,不局限于setup和teardown这几个命名conf

    2022年7月31日
    10
  • 计算机房空调设计规范,空调机房防火设计规范「建议收藏」

    计算机房空调设计规范,空调机房防火设计规范「建议收藏」浏览数:1153空调机房设计干货来一批  1.1机房位置及技术要求  1.1.1机房位置的选择与组成  1.机房的位置选择  离心式、螺杆式制冷机组的机房按功能分有两类:一类是为建筑物空调服务的冷冻机房,提供空调用的低温冷冻水,常采用冷水机组直接供冷或蓄冷槽与制冷机组组合供冷的方法;另一类是为冷藏、冷冻服务的制冷机房,常采用螺杆式制冷机组。冷冻机房位置的合理选择,对于整个建筑物的合理…

    2022年10月2日
    2
  • 区块链|CAP原理[通俗易懂]

    区块链|CAP原理[通俗易懂]分布式系统(distributedsystem)正变得越来越重要,大型网站几乎都是分布式的。分布式系统的最大难点,就是各个节点的状态如何同步。CAP定理是这方面的基本定理,也是理解分布式系统的起点。一、分布式系统的三个指标ConsistencyAvailabilityPartitiontolerance它们的第一个字母分别是C、A、P。EricBrewer说,这三个指标不可能同时做到。这个结论就叫做CAP定理。二、Partitiontolerance先看Parti

    2022年5月19日
    82

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号