点击上方码农的后花园”,选择星标” 公众号

精选文章,第一时间送达

之前给大家制作了一个来自程序员的表白神器,本期带大家做一个“生日快乐”App”,来自程序员的生日礼物,不要再说程序员不懂浪漫咯~

往期精彩:

Android App 开发的三种姿势 ~

模型部署,移动端安卓App开发环境搭建和配置教程 ~

运你的第一个“Hello World” 安卓App(附赠:安卓开发入门手册)

创建了一个空白的App项目后(不会创建的,可以看我前面几期关于安卓的文章哦),会发现App项目文件结构主要包括:manifests、java、res三个子文件夹,分别对应于App项目配置文件、App页面逻辑控制代码、App页面布局。

所以新建一个空白的App项目后,制作“生日快乐”App的第一步:在app项目的res文件下的layout文件中的activity_main.xml文件中编写App的页面,分别绘制一个文本框控件,一个图片展示控件和一个播放/暂停按钮,最终的页面布局设置如下。

activity_main.xml代码如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android/apk/res/android"
    xmlns:app="http://schemas.android/apk/res-auto"
    xmlns:tools="http://schemas.android/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">


    <!--文本框-->
    <TextView
        android:layout_margin="20dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="祝你生日快乐!"
        android:textColor="@android:color/holo_red_light"
        android:textSize="25dp" />


    <!--图片展示控件-->
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:src="@drawable/img" />


    <!--按钮控件-->
    <Button
        android:id="@+id/btn"
        android:layout_margin="10dp"
        android:layout_alignParentBottom="true"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="播放/停止" />


</RelativeLayout>

在此之前,我们需要将我们要在App上展示的多啦A梦的图片img.jpg和生日快乐歌music.mp4分别放置在app文件夹下的drawble和raw文件夹下。

然后在App项目结构的java文件中的MainActivity.java文件编写播放/暂停生日快乐歌按钮的逻辑控制代码,简单的逻辑是首先获取播放music.mp4的媒体流对象,然后为按钮设置一个点击事件:点击播放按钮,播放生日快乐歌,按钮显示暂停状态,再次点击,暂停播放,再次点击,再次播放。

很简单的一个逻辑控制,MainActivity.java文件内容如下:

package com.example.happybirthday;
import androidx.appcompat.app.AppCompatActivity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;


//java代码控制"界面布局"的逻辑控制
public class MainActivity extends AppCompatActivity {


    @Override
    //主程序main
    protected void onCreate(Bundle savedInstanceState) {
        //初始化继承Oncreate类
        super.onCreate(savedInstanceState);
        //显示布局
        setContentView(R.layout.activity_main);
        //初始化布局:自定义initUI方法
        initUI();
    }


    private void initUI() {
        //首先获取媒体播放对象
        MediaPlayer mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.viedo);


        //然后根据控件id找到相应的按钮、并注册一个按钮点击事件:setOnClickListener监听点击对象->onClick
        findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
            @Override
            //当我们点击btn这个id对应的按钮后,会回调onClick方法
            public void onClick(View view) {
                //判断媒体播放对象是否正在播放
                if(mediaPlayer.isPlaying()){
                    mediaPlayer.pause(); //如果正在播放,就停止播放
                }else{
                    mediaPlayer.start(); //如果没有播放,就开始播放
                }
            }
        });
    }
}

最后检查一下app项目配置文件: manifests文件下的AndroidMainfest.xml文件,这里一般不需要进行任何的修改。

点击菜单栏里的,绿色箭头按钮,就可以在我们已经下载好了的虚拟手机设备上运行调试“生日快乐”App了。也可以打开我们自己的手机的开发者模式,直接在我们自己的真机上对设计的App进行运行调试。创建电脑端的虚拟手机和在真机上调试运行App,具体操作,可见往期文章: 运行你的第一个“Hello World” 安卓App(附赠:安卓开发入门手册)

这样,我们“生日快乐”APP就已经做好了,只不过这个App现在是安装在我们的虚拟的手机模拟器上。我们点击菜单栏里灰色的下三角按钮,将当前项目结构Android切换成Project结构展示,就可以看到调试运行生成debug版本的App的安装包文件app-debug.apk

但是此时你将这个App的安装包文件app-debug.apk发给别人或者自己的手机上进行下载安装,是无法成功的。

这是因为此时生成App的安装包文件app-debug.apk, 是调试运行生成安装包.apk文件是debug版本的,它是调试运行时生成的,不是打包生成的,所以无法运行在真机上。只有release版本App的安装包.apk文件,也就是打包发布生成的App的安装包。

经过打包操作之后,生成发布版的的App的安装包app-release.apk文件,可以在项目Project项目下的app文件夹下的release文件中找到,如下所示。

简单来点说就是,运行调试生成的app用的是你电脑本端的系统环境运行的,此时你发给别人,别人没有你电脑端的系统环境是无法运行的。而打包生成的app,是将你电脑端所用的一切环境集成打包,这样别人没有你电脑端的环境,也可以下载安装你设计的App了。

下一期教大家如何将自己在Android Studio 上调试运行好生成的App打包生成可运行在真机上的安装包,后台回复,关键字“生日快乐”,获得已经打包的生日快乐App文件安装包。

——The  End——

更多推荐

制作一个“生日快乐”App,来自程序员的生日礼物~