AndroidDome(1)-如何写一个APP送给女生当生日礼物

标题

  • 前言
  • Android Studio介绍
  • 代码
  • 总结

前言

  遇到女生生日,不得准备生日礼物,刚好在学Android,顺便写了一个Dome给她当生日礼物。(很简单的而已,不喜勿喷)

Android Studio介绍

  Android Studio是Google旗下的一款软件,它可以使用Java、Kotlin、以及C++开发。当然了,Java开发是现在的潮流,但Kotlin开发才是未来。我这使用了Java开发,还是用熟悉的语言写起来得心应手。
在这里插入图片描述
 &emspAndroid Studio是有官方教程的,比较方便。
安卓发展这么多年了,教程和错误都很完备了,学会百度,幸福一生。Android Studio安装教程
  该教程是很老的版本,但八九不离十,变化不大,有问题可以联系本作者,免费解答。
安装和界面介绍就不写了,别人都有。直接开始代码吧。
哦,对,还有效果

点击按钮会跳转到下一个Activity,那个时钟是实时显示时间的,算一个创新点。
在这里插入图片描述

在这里插入图片描述
点击那个surprise会跳转到bilibili,当然了,你也可以跳到其他APP或网页。


哦,还有,这个APP是有背景音乐的。

代码

首先,我们打开Android Studio,新建一个project
在这里插入图片描述
  可以看到有很多的模板,我们选择Empty Activity,当然也可以选择No Activity,不过有点麻烦。
在这里插入图片描述
点击Next,可以看到下面的情况,
  1、这里是你的project的名字,遵循C语言起名规则
  2、这里是你的Dome的存储路径,不可以有中文,有中文那个finish不会亮,不信你试试。
  3、这里选Java,你选Kotlin的话也没问题,语言只是工具嘛。
  4、这里是你安装的SDK,相当于一个解释器,没有的话要检查一下你的安装包是不是少了什么东西,还是出了什么问题,一般按照官方的安装是没有问题的。
在这里插入图片描述
点击Finish,就有以下界面了。
在这里插入图片描述
  点一下右上角的小三角,运行一波,就会发现,报错,还提示你要装什么东西。对,这个测试需要安卓手机,但你又不想用自己的手机怎么搞?那就用Android Studio自带的虚拟机。
  安装虚拟机的教程在下面的链接虚拟机安装教程

  啥都装好后,就可以写Dome了。(其实可以运行一下,其实你再创建project的时候就已经写了一个Dome了,当然了,是最简单的Hello world,-
在这里插入图片描述
  在这里我新建了两个Activity和一个Java,和添加了一个依赖。是不是很简单。
  我们来认识一下各个重要的文件。
.java文件用来写功能的,实现各个控件的功能,其实不难。
在这里插入图片描述
这里的drawable一般都是用来存储图片和动图的
layout是页面布局,.xml文件都是布局文件,就跟UI设计一样,不过使用代码实现的。
在这里插入图片描述
最后就是添加依赖的地方了。这里有很大用处,各种炫酷的东西都要在这里添加依赖。
在这里插入图片描述

  好了,多点点就会了,点错了就重开咯,又不是毕业设计。

  写APP先学会写按键,毕竟,按键贯穿整个APP,这里只介绍两种按键类型。
1、按键的外观设计
在这里插入图片描述
这里使用了最普通的按键设计,你也可以搞的花里胡哨的,实用就行。花里胡哨只需在百度一搜就好了,也可以问问chatgpt。
  先有表面的东西才能搞内在的东西,先设计布局在实现其功能。
  我们在layout.xml里添加以下代码,布局要改为相对布局,我觉得这个比较方便。

<?xml version="1.0" encoding="utf-8"?><RelativeLayout 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"tools:context=".MainActivity"tools:ignore="ExtraText,MissingClass">//。。。。。。。。。。在这中间添加控件
</RelativeLayout>

有按键才能跟用户互动嘛,再加点小图片和文字,搞的漂漂亮亮的,女孩子才会喜欢嘛。

<!--文本框-->
//这里就是添加了文字,祝你生日快乐!斜体<TextViewandroid:id="@+id/text01"android:layout_margin="20dp"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textStyle="italic"  //这个就是斜体,软件自带的android:text="祝你生日快乐!"android:textColor="@android:color/holo_red_light"  //文字颜色:亮红色android:textSize="25dp" />//文字大小//同理可得<TextViewandroid:id="@+id/text02"android:layout_margin="90dp"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textStyle="italic"android:text="送给****"android:textColor="@android:color/holo_red_light"android:textSize="25dp" /><TextView    //这里是给一个时钟做准备的,不喜欢的话也可以不要,还是挺难的android:id="@+id/tvTime"android:layout_toRightOf="@id/text01"android:layout_marginTop="20dp"android:layout_marginLeft="30dp"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textStyle="italic"android:text="     "android:textColor="@android:color/holo_purple"android:textSize="25dp" /><!--图片展示控件-->//这里就是添加图片的地方,可以添加女生的照片或者其他照片,得而不得,不失为一种美好。<ImageViewandroid:id="@+id/image01"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="200dp"android:layout_marginBottom="41dp"android:src="@drawable/img" /><!--按钮控件-->
//按键模块,用来跳转到另一个activity的<Buttonandroid:id="@+id/btn"android:layout_width="match_parent"android:layout_height="70dp"android:layout_alignParentBottom="true"android:layout_centerVertical="true"android:layout_marginTop="10dp"android:layout_marginBottom="41dp"android:text="请点击此按钮" />  //文字可以改一改

  第一个Activity布局已经写完了,同理第二个Activity的布局也是一样的,新建Activity就不说了,这个自行摸索。
  接下来就是实现Activity之间的跳转、Activity到网站的跳转和背景音乐的设置。
  先来看第一个Activity之间的跳转。

        setContentView(R.layout.activity_main);// 获取控件idButton btn1 = findViewById(R.id.btn);// 监听点击事件btn1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// 跳转到另一个名为ButtonActivity的界面Intent intent=new Intent(MainActivity.this,MainActivity2.class);startActivity(intent);}});

这里使用了一个按键监听,基础操作就不多说了,复制修改就好了。
  接下来就是Activity跳转到网站。

        setContentView(R.layout.activity_main2);Btn2 = findViewById(R.id.btn01);final Uri uri=Uri.parse("https://www.bilibili.com/" +"video/BV1ab411n7no/" +"?share_source=copy_web&vd_source=50c79c9ca19b953130a4988502bded45");Btn2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent=new Intent(Intent.ACTION_VIEW,uri);startActivity(intent);}});

这个其实跟Activity之间的跳转非常像,只是将跳转的对象换成了网站。关键字:`final Uri uri=Uri.parse

  `最后就是背景音乐的设置。

        // 启动服务播放背景音乐Intent intent = new Intent(MainActivity.this, MyIntentService.class);String action = MyIntentService.ACTION_MUSIC;// 设置actionintent.setAction(action);startService(intent);

还要新建一个.java文件来实现音乐的播放,当然,你也可以在Activity里写,不过代码太长不建议这样写,而且后期的模块化学习无益。

package com.example.happybirthday;import android.app.IntentService;
import android.content.Intent;
import android.media.MediaPlayer;
import android.util.Log;/*** An {@link IntentService} subclass for handling asynchronous task requests in* a service on a separate handler thread.* <p>* TODO: Customize class - update intent actions and extra parameters.*/
public class MyIntentService extends IntentService {// TODO: Rename actions, choose action names that describe tasks that this// IntentService can perform, e.g. ACTION_FETCH_NEW_ITEMSpublic static final String ACTION_FOO = "com.example.bouzouki.demobilising.action.FOO";public static final String ACTION_BAZ = "com.example.bouzouki.demobilising.action.BAZ";// action声明public static final String ACTION_MUSIC = "com.example.bouzouki.demobilising.action.music";// TODO: Rename parameterspublic static final String EXTRA_PARAM1 = "com.example.bouzouki.demobilising.extra.PARAM1";public static final String EXTRA_PARAM2 = "com.example.bouzouki.demobilising.extra.PARAM2";// 声明MediaPlayer对象private MediaPlayer mediaPlayer;public MyIntentService() {super("MyIntentService");}@Overrideprotected void onHandleIntent(Intent intent) {if (intent != null) {final String action = intent.getAction();if (ACTION_FOO.equals(action)) {final String param1 = intent.getStringExtra(EXTRA_PARAM1);final String param2 = intent.getStringExtra(EXTRA_PARAM2);handleActionFoo(param1, param2);} else if (ACTION_BAZ.equals(action)) {final String param1 = intent.getStringExtra(EXTRA_PARAM1);final String param2 = intent.getStringExtra(EXTRA_PARAM2);handleActionBaz(param1, param2);}// 根据intent设置的action来执行对应服务的操作if (ACTION_MUSIC.equals(action)){handleActionMusic();}}}/*** 该服务执行的操作用来播放背景音乐*/private void handleActionMusic() {if (mediaPlayer == null){// 根据音乐资源文件创建MediaPlayer对象 设置循环播放属性 开始播放mediaPlayer = MediaPlayer.create(this, R.raw.bd_02);mediaPlayer.setLooping(true);mediaPlayer.start();}}/*** Handle action Foo in the provided background thread with the provided* parameters.*/private void handleActionFoo(String param1, String param2) {// TODO: Handle action Foothrow new UnsupportedOperationException("Not yet implemented");}/*** Handle action Baz in the provided background thread with the provided* parameters.*/private void handleActionBaz(String param1, String param2) {// TODO: Handle action Bazthrow new UnsupportedOperationException("Not yet implemented");}
}

再把音乐.mp3复制到raw里就好了,再修改一下音乐文件名字。
  最后就是时间的设置:
先在这里添加以下代码
在这里插入图片描述

implementation 'com.google.android.gms:play-services-auth:20.5.0'

添加依赖
最后就是添加实现代码,覆盖掉之前的空白text

       timer = new Timer();//创建timer对象tvTime=findViewById(R.id.tvTime);timer.schedule(new TimerTask() {@Overridepublic void run() {Log.v("Timer","run()...");mCalendar = Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00"));int hour = mCalendar.get(Calendar.HOUR_OF_DAY);//HOUR    进制为12小时   HOUR_OF_DAY  为24小时int minute = mCalendar.get(Calendar.MINUTE);//分钟int second = mCalendar.get(Calendar.SECOND) + 1;//秒数if (second == 60) {minute += 1;second = 0;}if (minute == 60){hour += 1;minute = 0;}if (hour == 12){hour = 0;}@SuppressLint("DefaultLocale") String time = String.format("%d:%02d:%02d", hour, minute, second);mCalendar.set(Calendar.SECOND, second);mCalendar.set(Calendar.MINUTE, minute);mCalendar.set(Calendar.HOUR_OF_DAY, hour);Message message=new Message();message.what=0;message.obj=time;mHandler.sendMessage(message);}},0,1000);}@SuppressLint("HandlerLeak")Handler mHandler=new Handler(){@Overridepublic void handleMessage(Message msg) {Log.v("Timer","handleMessage()..");super.handleMessage(msg);String str=(String)msg.obj;tvTime.setText(str);}};@Overrideprotected void onDestroy() {super.onDestroy();if(timer!=null){timer.cancel();//关闭timer}

这样就写完了,是不是非常简单,礼轻情意重,快去跟你爱的人说声生日快乐吧。

总结

礼物虽简易,但人情亦珍贵,好好珍惜眼前人。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/54059.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

向微信看齐,马斯克欲将Twitter打造为超级App,宣布即将杀死蓝鸟Logo ,改为“X”!...

整理 | 苏宓 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 自去年 10 月底马斯克用 440 亿美元接管 Twitter 之后&#xff0c;这家主流的社交媒体平台所经历的巨变便从未停止。 上个周日&#xff0c;马斯克在承认 Twitter 广告商回归缓慢之后&#xff0c;他将采…

谷歌迎着 ChatGPT 炮火正式发布 Bard!CEO 亲自下令全员测试,保卫搜索刻不容缓...

公众号关注 「奇妙的 Linux 世界」 设为「星标」&#xff0c;每天带你玩转 Linux &#xff01; 被ChatGPT逼到墙角的谷歌&#xff0c;终于要正面反击了&#xff1a; 谷歌版ChatGPT&#xff0c;已确定发布。 谷歌CEO皮查伊亲自撰文宣布&#xff1a;将推出对话人工智能服务Bard。…

怎么将语音转为文字?不如试试这几个语音转文字软件app

随着时代的发展&#xff0c;现在许多小伙伴会将重要却来不及整理的内容&#xff0c;用录音或是语音的方式记录下来&#xff0c;之后再进行整理。但是在整理的时候&#xff0c;有些人可能会因为需要多听几遍音频才能完成工作而感到痛苦&#xff0c;毕竟这样做&#xff0c;花费的…

Android TTS文本转语音TextToSpeech

Android 系统里内置了PicoTTS&#xff0c;对中文的支持很不给力。但是我们可以安装“讯飞语记”TTS&#xff0c;中文就不是问题了。 首先介绍下核心方法speak()及其参数 public int speak(final String text, final int queueMode, final HashMap<String, String> para…

android通过百度语音合成实现文字转换成语音(TTS)详细教程?

android实现百度语音合成 1.使用TextToSpeech朗读文字2.百度语音合成1.创建应用1.在百度开发者平台实现注册&#xff0c;并进行实名认证2.点击语音技术3.点击创建应用4.创建细节5.领取语音合成次数 2.添加文件1.在lib中添加如图文件2.添加jniLibs文件夹3.添加assets文件(重点&a…

Android文字转语音播报

文章目录 前言一、实现方式1.Android系统自带TTS2.第三方语音框架&#xff1a;云知声离线语音(32位&#xff1a;armeabi-v7a)、... 二、Android系统自带TTS1.集成工具类TextToSpeechUtils2.初始化和调用3.需要的支持中文语音引擎 三、第三方语音框架&#xff08;云知声离线语音…

安卓文字转语音——其实可以很简单——TextToSpeech用法解析

前言 很多时候我们会碰到文字转语音的需求&#xff0c;使用第三方sdk是个不错的选择&#xff0c;其实也可以更简单&#xff0c;安卓原生就提供了一个类处理这个事务。TextToSpeech无需集成&#xff0c;直接使用 局限 支持22种语言&#xff0c;不过中文支持并不很好&#xff…

Android通过TextToSpeech实现文字转语音

一、直接上代码&#xff1a; import android.app.Activity; import android.os.Bundle; import android.speech.tts.TextToSpeech; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widge…

Android 离线文字转语音功能-TTS(Text To Speech)

前言 在 Android 中&#xff0c;TTS全称叫做 Text to Speech&#xff0c;从字面就能理解它解决的问题是什么&#xff0c;把文本转为语音服务&#xff0c;意思就是你输入一段文本信息&#xff0c;然后Android 系统可以把这段文字播报出来。这种应用场景目前比较多是在各种语音助…

微信24小时客服热线电话/如何转到人工服务办理

这个时候&#xff0c;我们就可以拨打微信服务电话到人工客服咨询中心&#xff0c;让人工客服为我们解决我们需要解决的问题和我们想要知道的信息电话接通后&#xff0c;按照微信人工服务的提示指示去做&#xff0c;这样我们就可以24小时打通微信人工服务热线&#xff1f;

在线客服功能介绍-了解常见在线客服系统的功能点

在线客服&#xff0c;通常我们说这个基本都是指IM客服(区分于电话客服等)。“客服”表示了系统的使用人群或系统功能&#xff0c;“在线”说明了交互方式。我们在日常生活中多多少少都有用到或接触过在线客服&#xff0c;比如&#xff1a; ​ 在生活中我们可能会遇到各种各样的…

微信哪个电话能转人工服务器,如何联系微信人工客服?掌握好窍门,只需30秒可接通,亲测有效...

原标题&#xff1a;如何联系微信人工客服&#xff1f;掌握好窍门&#xff0c;只需30秒可接通&#xff0c;亲测有效 很多人都会使用微信&#xff0c;但是使用过程中难免会遇到问题&#xff0c;比如账号封号、转错账、支付问题等。如果在机器人自动回答中解决不了问题&#xff0c…

人工客服为什么总是接不通?

原文链接 “有问题找客服”&#xff0c;人们总是会这样说&#xff0c;感觉一切售前售后都可以通过客服快速解决&#xff0c;可是当我们真正拨打客服热线的时候却遇上了等待时间过长&#xff0c;甚至是在线人工客服迟迟转接不上等种种情形。而接通以后如果是智能客服机器人&…

LCHub:Zoho联手ChatGPT,为8,000万用户提供生成式AI服务!

近日,全球著名SaaS服务商Zoho宣布与OpenAI达成技术合作,将ChatGPT集成在产品矩阵中,并推出全新生成式AI产品——Zia。 据悉,Zia在ChatGPT加持下,具备自动生成文本、量身定制文本、文本重置、邮件内容生成、会议摘要、生成公式、客服摘要、数据格式转换等功能。 简单来说…

如何使用ChatGPT辅助编程:通过引导自动生成编程代码

推荐&#xff1a;将 NSDT场景编辑器 加入你的3D工具链 大型语言模型基本上是一台可以理解和生成文本的机器。取决于它的训练方式&#xff0c;有时模型可以生成文本以外的内容。ChatGPT就是这样一个大型语言模型。如果您正确提示&#xff0c;它可以生成编程代码。在这篇文章中&a…

【Tomcat内核】server和servic的区别

以下回答来自chatGPT server是什么&#xff1f; Server可以翻译为服务器&#xff0c;是一种提供网络服务的计算机系统。它可以接受来自客户端的请求并响应这些请求&#xff0c;以满足客户端的需求。服务器可以提供各种服务&#xff0c;例如网站托管、电子邮件、数据库、文件共享…

今天,微软重新发明搜索引擎:首款 ChatGPT 搜索来了

这是「进击的Coder」的第 795 篇技术分享 来源&#xff1a;机器之心 “ 阅读本文大概需要 8 分钟。 ” 从现在起&#xff0c;比 ChatGPT 更强大的语言模型直接进入了你的浏览器。 一夜之间&#xff0c;全球最大的科技公司仿佛都回到了自己年轻时的样子。 在谷歌宣布「实验性对…

chatgpt赋能python:用Python开发软件的SEO:如何让您的应用程序更容易被搜索引擎索引

用Python开发软件的SEO&#xff1a;如何让您的应用程序更容易被搜索引擎索引 引言 在当今数字化时代中&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;是一项非常重要的工作&#xff0c;尤其是对于那些寻求在互联网上推广新软件的开发人员。如果您正在寻找一种使您的软…

天秤座的主动在于次文

文章导读&#xff1a; 不主动找你聊天&#xff0c;不是因为你不重要&#xff0c;而是我不知道我不重要。太主动反而被敷衍&#xff0c;只好把想念和热情都收敛&#xff0c;可你永远不知道&#xff0c;主动的人需要鼓起多大的勇气&#xff0c;一点人际关系&#xff0c;一点机遇…

比特未来:Facebook仍将在2020年启动天秤座

比特未来&#xff1a;Facebook仍将在2020年启动天秤座 比特未来的前沿新闻称&#xff0c;Facebook将在2020年前推出Libra&#xff0c;尽管监管机构推迟了这一计划。 Facebook副总裁达维•马库西(Dawei•makusi)在Facebook上表示&#xff0c;尽管监管机构对天秤座项目存在强烈敌…