最简单易懂的android入门

最近突然被安排写android,整个人都是蒙的🤦‍♀️

首先呢我是一名后端开发,平时也写一些前端代码,现在又被安排写android

原因很简单:大家都说会写java的人就会写android🤢

但是我想说的是我后端还没整明白呢😢

作为一个合格的打工人🐱‍🚀,只能硬着头皮上,每天给自己洗脑,我是公司的一块砖哪里需要哪里搬

好了 相信很多人也有我这样的困扰,接下来讲的内容只适合小白。只是记录一下,对于0基础的我去完成Android功能的过程。大佬请绕道,或者评论区给补充👀

有喜欢或想要深入研究Android的朋友,欢迎关注我男朋友的博客哦,他在这方面更加专业。

https://zhujiang.blog.csdn.net/

 

目录

 一、创建项目

二、目录结构介绍

三、连接真机测试

四、android生命周期

五、js和android交互

六、项目打包


 一、创建项目

此处省略如何安卓android studio....,关于连接git,参考这篇文章👇https://mp.csdn.net/editor/html/116586847

File--->new project  选择自己需要的模板

创建自己的项目名称和选择编程的语言,由于我没有学习过Kotlin,所以我选择的是java。

创建好的项目如下图所示:红线框起来的地方可以切换项目显示的类型,我一般都给它切换成project,感觉更舒服一些

二、项目结构介绍

序号1、2:里面是java代码,每一个Activity对应一个.xml文件,xml文件主要是布局,我们可以简单理解为界面。而avtivity的作用是加载xml中的组件(一般xml中会设置id,activity通过id去查找对应的组件),从而实现一些功能。给我的感觉就是前后端揉在一起的感觉,这也是写完前后端分离再来看android项目,感觉最变扭的地方(说实话具体里面的组件什么的我还没摸清楚,这篇文章的主要意图呢,是希望帮助像我一样从未搞过android的小白,可以快速上手,所以细节就不过多赘述)

例如:学啥都从hello world开始  哈哈哈哈

运行结果:

序号3、这个文件控制了app的名字和图标等有关app的配置,同时需要添加权限也是这里配置(例如:网络权限、联网权限及录音等等,用到的时候可以网上查,有很多例子,你只需要指定有关权限配置的你就添加到这里)

下面是我所做功能的文件,我粘贴到了这里

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="cn.most.ic.KJBGovSerPlatform">


    <!-- 网络权限 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <!--获取手机相关信息-->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name = "android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name = "android.permission.WAKE_LOCK" />

    <!-- 往SDCard写入数据权限 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <!-- 录音权限 -->
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <!-- 在SDCard中创建与删除文件权限 -->
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
        tools:ignore="ProtectedPermissions" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher1"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:usesCleartextTraffic="true"
        android:theme="@android:style/Theme.Holo.Light.NoActionBar"
        tools:replace="android:icon,android:theme">
        <!--android:theme 隐藏掉app的导航栏-->
        <activity android:name=".MainActivity" android:theme="@style/Theme.AppCompat.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

序号4、5、6: 这里涉及到gradle文件----添加依赖的文件

settings.gradle
settings.gradle 的作用就是一些模块被包含过后,就需要在这里声明:

rootProject.name = "My Application"
include ':app'

project目录下的build.gradle文件定义在这个工程下的所有模块的公共属性

module下的build.gradle文件定义只对本模块起作用,其实这两者的区别比较像java的分布式项目里的依赖关系。 

反正呢 需要添加依赖包那你就直接在对应的gradle文件中加

三、连接真机测试

上述简单讲了一下项目基本构成,接下来就到了启动测试环节了。我这个是已经安装好的,如果你没有启动项,进行如下操作:

 

画红框的部分如果出现no module的情况不要着急,继续往下看。(不知道是不是适用全部此类报错,反正我每次有关启动的问题都是通过以下方式解决的)

File--->project structure

好了启动项ok了,没有连接真机的情况下,会出现虚拟机,启动效果就说上面的hello world示例。这里注意 启动真机时得将手机设置为开发者模式。之后启动后手机上会出现app,表示启动成功喽

四、android生命周期

在android中明白其中的生命周期极其重要。没看生命周期之前 反正我直接看代码是头大的。不排除我菜的原因哈

Activity的生命周期共七个指示器:onCreate、onStart、onResume、onPause、onStop、onDestroy、onRestart。

一图解百惑

onCreate():不可见状态

在Activity被创建时回调,第一个生命周期。一般在创建Activity时需要重写该方法做一些初始化操作,最常用的例如通过setContentView()设置界面布局资源,初始化所需要的组件信息等。

onStart():可见状态

该方法回调表示Activity正在启动,此时avtivity处于可见状态,只是前台没有显示出来,因此用户无法交互。

onResume():可见状态

此方法回调时,Activity已经在屏幕上显示UI允许用户操作了。当Activity停止后,重写回到前台时也会调用onResume()。

onPause():

此方法回调时,Activity正在停止(Paused形态),通常接下来 onStop() 会被回调 。但通过流程图可见,另一种情况是onPause() 执行后直接执行了onResume方法,这可能是用户点击Home键,让程序退回到主界面,程序在后台运行时又迅速地再回到到当前的Activity,此时onResume方法就会被回调。我们可以在onPause方法中做一些数据存储、动画停止、资源回收等操作。另外,onPause方法执行完成后,新Activity的onResume方法才会被执行。所以onPause不能太耗时,因为这可能会影响到新的Activity的显示。

onStop():不可见状态

此方法回调,Activity即将停止或者完全覆盖,此时Activity不可见,仅在后台运行。onStop方法可以做一些资源释放的操作,不能太耗时

onRestart():可见状态

调用该方法,表示Activity在重写启动,有不可见状态变为可见状态。这种情况,一般发生在用户打开了一个新的Activity时,之前的Activity就会被onStop,接着又回到之前Activity页面时,之前的Activity的 onRestart方法就会被回调。

onDestory():不可见状态

此方法回调时,表示Activity正在被销毁

五、js和android交互

配置:

***Activity:

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        webView = new WebView(this);
        setContentView(webView);
//        设置支持js
        WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        /**
         * 为webView添加注册js 接口回调监听
         * 参数一:接口对象  参数二:接口别名(js使用)
         * 如果别名叫aa,那么js调用接口的时候就要写成window.aa
         */
        webView.addJavascriptInterface(this, "android");
        webView.loadUrl("http://39.104.52.230/test.html");
//        防止webView跳转浏览器
        webView.setWebViewClient(new WebViewClient());
    }

AndroidManifest.xml:

<!-- 网络权限 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

js中调用android的方法

js代码:jsonStr为自行拼接json(这个是根据需求写),actionFromJs为android方法

var data = {
			"function": "device",
			"action": "",
			"successCallBack": "KJBMobile.startRecordAudioSuccessCallback",
			"failCallBack": "KJBMobile.startRecordAudioFailCallback"
			}
var jsonStr = JSON.stringify(data);
window.android.actionFromJs(jsonStr);

android方法:一定要在方法上加@JavascriptInterface

@JavascriptInterface
    public void actionFromJs(String data){
        BaseBean bean=new Gson().fromJson(data,BaseBean.class);
        switch (bean.getFunction()){
            case "camera":
                callCamera(bean.getFailCallBack(),bean.getSuccessCallBack());
                break;
            case "device":
                getDeviceInfo(bean.getFailCallBack(),bean.getSuccessCallBack());
                break;
            default:
                break;
        }
    }

android调用js的方法

fail为js中定义的方法,ResultUtils...为我返回值的封装类。

webView.loadUrl("javascript:"+fail+"('" + ResultUtils.error("获取基本信息失败") + "')");

六、项目打包

如果你只是简单测试,

正常打包:

https://www.runoob.com/w3cnote/android-tutorial-sign-package.html

好啦,和大家分享的内容到此结束啦。能力有限 只是把自己在零基础的情况下写android的一点小总结,毕竟大佬难懂小白的痛苦。哈哈哈 加油👉,如果喜欢我的文章记得点赞哦❤

 

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值