开发一个简单的app

为了让队友更好地了解项目进度,本蒟蒻决定写一篇教学博客,分分钟把队友变成开发app的顶级高手!(哈哈哈了解一下基本步骤就OK了)

我们用Android Studio编程,现在我们的目标,是要实现一个可以获取自己目前定位,并把它发到自己电脑端的功能。Here we go!

由于本人在开发过程中逻辑混乱,致使一开始不知道要怎么设计这个获取定位的功能,但了解微信获取定位的设计之后,来了灵感,于是做了个差不多的(当然还是很简陋啦,做得没有微信那么好)。目前的设计是,打开页面,有一个按钮,点击这个按钮,有一个获取当前定位的按钮,点击,显示一个地图,也就是定位,然后在左上角又有一个按钮(俄罗斯套娃),点击一下,就可以发到自己的电脑上啦!

考虑到时间问题,就不带着一点一点写了,直接把写好了的代码弄上来,一点一点分析(怎么感觉这波有点坑队友啊,不是不是,一定是我想多了[狗头保命])。

首先是MainActivity.java.这是创建一个项目之后自动生成的。在安卓开发中,对于每一个java文件,都会有一个xml文件与其对应。什么意思呢,就是我们打开一个app,不是就显示出一个页面嘛,那么对应于每一个这样的页面,都有一个xml文件,来决定这个页面长什么样子,也就是说,xml就是来设计这个页面的,相当于前端的html;然后还有一个java文件,你这个页面能实现什么功能,肯定都是要编程来实现的。

现在,我们来看看MainActivity里面的内容:

 1 package com.example.intellectualmedicaltreatment;
 2 
 3 import androidx.annotation.RequiresApi;
 4 import androidx.appcompat.app.AppCompatActivity;
 5 import androidx.core.app.ActivityCompat;
 6 
 7 import android.Manifest;
 8 import android.content.Intent;
 9 import android.content.pm.PackageManager;
10 import android.os.Build;
11 import android.os.Bundle;
12 import android.view.View;
13 
14 import com.amap.api.location.AMapLocationClient;
15 
16 import com.google.android.material.floatingactionbutton.FloatingActionButton;
17 
18 //监听定位和定位变化
19 public class MainActivity extends AppCompatActivity {
20     private FloatingActionButton floatingButton;
21 
22     private final String[] permissions = new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
23             Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_EXTERNAL_STORAGE};
24 
25     @RequiresApi(api = Build.VERSION_CODES.M)
26     public void checkPermission(){
27         boolean flag=true;//默认全部被申请过
28         for (String permission : permissions) {//只要有一个没有申请成功
29             if (!(ActivityCompat.checkSelfPermission(this, permission) == PackageManager.PERMISSION_GRANTED)) {
30                 flag = false;
31             }
32         }
33         if(!flag){
34             //动态申请权限
35             requestPermissions(permissions,100);
36         }
37     }
38 
39     private void initFloatButton() {
40         floatingButton = (FloatingActionButton) this.findViewById(R.id.floatingActionButton);
41         floatingButton.setOnClickListener(new View.OnClickListener() {
42             @Override
43             public void onClick(View v) {
44                 Intent intent = new Intent(MainActivity.this, ContactActivity.class);
45                 startActivity(intent);
46             }
47         });
48     }
49 
50     @RequiresApi(api = Build.VERSION_CODES.M)
51     protected void onCreate(Bundle bundle) {
52         super.onCreate(bundle);
53         setContentView(R.layout.activity_main);
54         AMapLocationClient.updatePrivacyShow(MainActivity.this,true,true);
55         AMapLocationClient.updatePrivacyAgree(MainActivity.this,true);
56         checkPermission();
57         initFloatButton();
58     }
59 }

我们来看看分析一下这份代码:

首先,我们声明了一个变量:FloatingActionButton,这就是一个按钮,因为它肩负重任,所以肯定要在java文件这边先声明一下,然后再开始搞事情。

然后是一个String类型的数组,这里面保存的是一些申请权限的东西,就是,当你下载一个app时,是不是在使用前都会让你授权一堆东西,什么访问通讯录权限,访问定位权限,甚至还有黑心app要访问你的相册权限啥的,对吧?所以,这里我们也要这么干!

然后是这个checkPermission方法,就是当检测到没有拿到你的授权时,我就需要提示你让你授权给我。至于这里面具体怎么写的,憋问我,咱也不会,咱也是从网上找的(好吧其实是从另外一位队友那剽过来的)。不过,这一波面向ctrl c+v的编程就是nice!其实啊,这部分代码放哪都没关系,毕竟只是一个简单的方法而已嘛。咱接着往下看。

然后嘞,是一个初始化刚才呢个按钮的方法。有没有注意到,我之前的操作仅仅是声明,但还没有初始化啊?所以,这里我们要对它初始化,不过要注意啊,这里不能像java中那样通过new来初始化,毕竟安卓开发还是有一点区别的对吧。那怎么办呢?诶,这里就要有请我们的xml闪亮登场啦!

这个页面的xml长这样:(注意这些文件在layout文件夹里,看到layout这个词其实就更能理解这层关系了)

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:app="http://schemas.android.com/apk/res-auto"
 4     xmlns:tools="http://schemas.android.com/tools"
 5     android:layout_width="match_parent"
 6     android:layout_height="match_parent"
 7     tools:context=".MainActivity">
 8 
 9     <com.google.android.material.floatingactionbutton.FloatingActionButton
10         android:id="@+id/floatingActionButton"
11         android:layout_width="wrap_content"
12         android:layout_height="wrap_content"
13         android:layout_marginTop="16dp"
14         android:layout_marginEnd="24dp"
15         android:clickable="true"
16         app:layout_constraintEnd_toEndOf="parent"
17         app:layout_constraintTop_toTopOf="parent"
18         app:srcCompat="@android:drawable/ic_menu_add" />
19 
20 </androidx.constraintlayout.widget.ConstraintLayout>

 哇看不懂dèi不dèi?没关系,我也不懂,反正也不是我写的[/旺柴].一般来说,我们要往一个app页面中添加一个按钮啊,输入框啊这些东西的时候,其实都不用专门去对应的xml页面中手写代码(这谁受得了!),我们只要:在Android Studio中点开这个xml页面,在右上角区域可以看到三个按钮:Code Split Design.分别是显示纯代码,代码和页面都看和纯页面。我们点击Design这个页面,然后找到这个东西:

比如说,如果你要添加一个button按钮,那直接选中这个button,把它拖进页面就可以了。然后你就会发现在xml页面中,对应代码它自己就有了。很简单对吧!

我们再来看,你会发现在xml页面中多出来的那部分代码中,有一个属性:android:id.这个就是判断身份的标志,而我们要在java文件中对按钮初始化,靠的就是这个标志。下面就是要记住的了:我们调用findViewById这个方法,传一个参数:R.id.xxx就可以了。鉴于Android Studio之强大,我们不需要真的把这个id名字打全,只要打出R.id.就会出来一堆东西供我们选择,选就完了。

由于这篇博客我是在java课上写的,而且电脑要没电了,那今天就到这里吧,下次再更新,To be continued...

 

posted @ 2021-12-01 10:53  EvanTheBoy  阅读(1590)  评论(0编辑  收藏  举报