学习 Android,我觉得有几个点需要注意

第一点:需要找到合适的学习方法。

第二点:需要有一个好的学习环境。

第三点:就是需要掌握一些必要的知识和技能。下面我将从这几个方面进行分享:

什么是 Android?

Android是英文“Android”的中文译名。Android系统是基于 Linux内核开发的,它由谷歌公司推出并提供了完整的开发环境,包括 Android操作系统、 Java虚拟机、运行时环境、开发工具包等。

什么是安卓

安卓是基于 Linux内核开发的开放源代码的移动操作系统,它最大的特点就是具有跨平台性。目前安卓已经成为全球最大的移动操作系统。使用安卓可以将手机上已有的应用移植到手机上。

Android系统采用开源原则,基于 Linux内核开发,它主要有以下几个特点:

  1. 跨平台性: Android系统可以在 Windows平台、 Linux平台以及 iOS平台上运行;
  2. 开放性: Android系统为用户提供了多种编程语言和开发环境,用户可以根据自己的兴趣选择相应语言进行开发;
  3. 安全性: Android系统采用了C++语言进行编程,这样可以保证程序能够在安全的环境下运行;
  4. 跨平台性:由于安卓系统是基于 Linux内核开发,所以其具有跨平台性。用户可以在多种操作系统上运行应用程序。不过对于一些大型的应用程序来说, Android系统只能运行在一种操作系统上。

   概述:
·基于Linux的、开放源代码的操作系统。
·由Google和【开放手机联盟】领导及开发。
·2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建【开放手机联盟】共同研发改良Android系统。
·Google以【Apache开源许可证】的授权方式,发布了Android的源代码。

1.1编程语言

  安装android-studio

1.JDK的下载

 Android Studio是谷歌官方提供的Android开发工具,集成了各种工具和库,可帮助您轻松构建高质量的Android应用程序。

官方网站

 2. SDK

Android SDK包含了您需要构建Android应用程序的全部工具和库。
打开Android Studio,并从欢迎屏幕中选择“Configure”>“SDK Manager”。
在SDK Manager窗口中,选择“SDK Platforms”选项卡,并确保您已安装了所需的Android版本。
选择“SDK Tools”选项卡,确保您已安装所需的工具,例如Android SDK Build-Tools和Android Emulator。
点击“Apply”按钮,以保存所做的更改并自动下载并安装任何缺少的组件。
完成这些步骤后,您的Android SDK已经配置好了,您可以开始使用Android Studio进行开发和测试应用程序

2.1学习书籍可以参考下这本:《Android编程入门教程》

androidstudio课程设计 android课程设计总结_Android

3.1 熟悉IDE

我们在之前的课程也用到过了ide,

所以安装的过程就剩了很多时间,直接打开就可以使用了 


res 目录

android项目的各种资源文件,比如layout存放界面布局文件 values目录下存放各种xml格式的资源文件

例如字符串资源文件:Strings.xml

颜色资源文件:colors.xml

3.1.1Activity的启动和结束

从当前页面跳到新页面,startActivity

从当前页面回到上一个页面,finish

如图所示,新建chapter03这一模块,

androidstudio课程设计 android课程设计总结_java_02

新建活动activity_start,设置第一个页面

然后在java代码中设置监听器,设置点击按钮之后的事件

在finish第二个页面中设置往前返回的按钮和相关代码

打开就是start,关闭就是close

4.1新建一个activity

名称为:CalculatorActivity

如图所示:

 

androidstudio课程设计 android课程设计总结_java_03

 

androidstudio课程设计 android课程设计总结_android_04

MainActivity.java文件如下:

package com.example.androidtext;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;


public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private Button zero, one, two, three, four, five, six, seven, eight, nine, dian, btn_del;
    //    定义加减乘除按钮
    private Button add, min, mul, div;
    //    定义等号按钮
    private Button equals;
    //    标识符,标识运算完成
    private Boolean buttonC = false;
    private Button btn_C;
    //    清除按钮
    private EditText srgc, scjg;

    //    定义输入过程和结果
    boolean equals_flag = false;

    @Override
    protected void onCreate(Bundle saveInstanceStace) {
        super.onCreate(saveInstanceStace);
        setContentView(R.layout.activity_calculator);


        // 小数点加减乘除,等于,清除回退
        zero = findViewById(R.id.button0);
        one = findViewById(R.id.button1);
        two = findViewById(R.id.buttontwo);
        three = findViewById(R.id.button3);
        four = findViewById(R.id.button4);
        five = findViewById(R.id.button5);
        six = findViewById(R.id.button6);
        seven = findViewById(R.id.button7);
        eight = findViewById(R.id.button8);
        nine = findViewById(R.id.button9);
        dian = findViewById(R.id.buttondian);
        btn_C = findViewById(R.id.buttonC);
        btn_del = findViewById(R.id.buttonDEL);

        //设置按钮监听
        zero.setOnClickListener(this);
        one.setOnClickListener(this);
        two.setOnClickListener(this);
        three.setOnClickListener(this);
        four.setOnClickListener(this);
        five.setOnClickListener(this);
        six.setOnClickListener(this);
        seven.setOnClickListener(this);
        eight.setOnClickListener(this);
        nine.setOnClickListener(this);
        dian.setOnClickListener(this);
        btn_del.setOnClickListener(this);
        btn_C.setOnClickListener(this);


        add = findViewById(R.id.buttonjia);
        min = findViewById(R.id.buttonjian);
        mul = findViewById(R.id.buttoncheng);
        div = findViewById(R.id.buttonchuyi);

        add.setOnClickListener(this);
        min.setOnClickListener(this);
        mul.setOnClickListener(this);
        div.setOnClickListener(this);

        equals = findViewById(R.id.buttondengyu);
        equals.setOnClickListener(this);

        //输入框,输出框
        srgc = findViewById(R.id.gc);
        scjg = findViewById(R.id.jg);
    }


    @Override
    public void onClick(View view) {
//        getText()获取的内容是一个对象,所以要转换一下
        String str = srgc.getText().toString();
        String out = scjg.getText().toString();
//        根据当前按钮按下的id进行判断
        switch (view.getId()) {
            case R.id.button0:
            case R.id.button1:
            case R.id.buttontwo:
            case R.id.button3:
            case R.id.button4:
            case R.id.button5:
            case R.id.button6:
            case R.id.button7:
            case R.id.button8:
            case R.id.button9:
            case R.id.buttondian:
                if (equals_flag) {
                    srgc.setText(null);
                    scjg.setText(null);
                    equals_flag = false;
                    srgc.setText(((Button) view).getText());
                } else {
                    srgc.setText(str + ((Button) view).getText());
                }


//                把现在的内容追加上,现在的内容来自于按钮的文本
//                按钮这个view对象先转换为Button


                buttonC = false;
                break;
            case R.id.buttonjia:
            case R.id.buttonjian:
            case R.id.buttoncheng:
            case R.id.buttonchuyi:
//                如果标识符为真,让值为空
                if (equals_flag) {
                    equals_flag = false;
                    //(3) 点了等号运算之后,再点运算符和数字连续操作,如1 + 2 = 3 + 4 = 7
                    srgc.setText(out + " " + ((Button) view).getText() + " ");
                } else {
                    srgc.setText(str + " " + ((Button) view).getText() + " ");
                }
                if (buttonC)
                    str = "";
                if (str.contains("+") || str.contains("-") || str.contains("*") || str.contains("/"))
//                    从起始位置开始,我们只要运算符之前的内容
                    str = str.substring(0, str.indexOf(" "));
//                所以在运算符的前面和后面都追加一个“ ”
                srgc.setText(str + " " + ((Button) view).getText() + " ");
                buttonC = false;
                break;
            case R.id.buttondengyu:
                equals_flag = true;
                //只按“=”不起任何作用
                if (!(srgc.getText().toString().length() > 0)) {
                    break;

                } else {
                    getResult();
                    srgc.setText(scjg.getText().toString());

                }
                break;
            case R.id.buttonC:
                srgc.setText(null);
                scjg.setText(null);
                break;
            case R.id.buttonDEL:
                //(2) 只按“=”不起任何作用
                if (str.length() > 0) {
                    srgc.setText(str.substring(0, str.length() - 1));
                } else {
                    scjg.setText(null);
                    srgc.setText(null);
                }
                break;
        }
    }

    //    点了等号运算之后,重新点数字,需要清除输入框内容,如1 + 2 = 3(结果框显示3),再点4 + 5 = 9(结果框显示9)
    private void getResult() {
        if (srgc.length() > 0) {

            double result;
            //        获取到字符串
            String exp = srgc.getText().toString();


//        按照空格分隔字符串,形成字符串数组,第一个元素是左侧操作数,第二个元素是运算符,第三个元素是右侧操作数
            String[] exp_arr = exp.split(" ");
//        定义结果
            double cnt = 0;
            int cnt1 = 0;

            if (!exp_arr[0].equals("") && !exp_arr[2].equals("")) {
                //        定义操作数
                double d1 = Double.parseDouble(exp_arr[0]);
                double d2 = Double.parseDouble(exp_arr[2]);

//        判断运算符
                if (exp_arr[1].equals("+"))
                    cnt = d1 + d2;
                else if (exp_arr[1].equals("-"))
                    cnt = d1 - d2;
                else if (exp_arr[1].equals("*"))
                    cnt = d1 * d2;
                else if (exp_arr[1].equals("/"))
                    cnt = d1 / d2;
//(1) 简写小数(如0.03简写.03,需要后台处理)
                scjg.setText(String.valueOf(cnt));
                if (!exp_arr[0].contains(".") && !exp_arr[2].contains(".") && !exp_arr[1].equals("/")) {
                    cnt1 = (int) cnt;
                    scjg.setText(cnt1 + "");
                } else {
                    scjg.setText(cnt + "");
                }
//(2) 首次只输入了“运算符 数字 等于”,如: + 4 =,则返回:0 + 4
            } else if (exp_arr[0].equals("")) {
                double d2 = Double.parseDouble(exp_arr[2]);
                if (exp_arr[1].equals("+")) {
                    scjg.setText(d2 + "");
                }
//(5) 只输入“数字 运算符 等于”,如:9 * =,则返回:9 * 9 = 81
            } else if (exp_arr[2].equals("")) {
                double d1 = Double.parseDouble(exp_arr[0]);
                if (exp_arr[1].equals("+")) {
                    result = d1 + d1;
                    scjg.setText(result + "");
                } else if (exp_arr[1].equals("-")) {
                    result = d1 - d1;
                    scjg.setText(result + "");
                } else if (exp_arr[1].equals("*")) {
                    result = d1 * d1;
                    scjg.setText(result + "");
                } else {
                    result = d1 / d1;
                    scjg.setText(result + "");
                }
            }
//        设置结果


            //除数不能为0
            if (!exp_arr[0].equals("0") && exp_arr[1].equals("/") && exp_arr[2].equals("0")) {
                scjg.setText("除数不能为0");


            }
        }
    }
}

4.1.2在activity_calculator.xml中定义布局,注意线性垂直布局,

使用滚动视图ScrollView,初始框架为:其中TextView、TextView、GridLayout分别对应计算器界面的名称、输入和结果显示框、4x5的按钮布局

<?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:orientation="vertical"
    tools:context=".Calculator">


    <EditText
        android:id="@+id/gc"
        android:layout_width="match_parent"
        android:layout_height="78dp"
        android:layout_row="0"
        android:layout_column="0"
        android:ems="10"
        android:hint="计算过程"
        android:inputType="textPersonName" />

    <EditText
        android:id="@+id/jg"
        android:layout_width="434dp"
        android:layout_height="65dp"
        android:layout_row="1"
        android:layout_column="0"
        android:ems="10"
        android:hint="显示结果"
        android:inputType="textPersonName" />

    <GridLayout
        android:layout_width="match_parent"
        android:layout_height="771dp"
        android:columnCount="4"
        android:rowCount="5">

        <Button
            android:id="@+id/buttonC"
            android:layout_width="200dp"
            android:layout_height="62dp"
            android:layout_columnSpan="2"
            android:rowCount="3"
            android:text="C" />

        <Button
            android:id="@+id/buttonDEL"
            android:layout_width="100dp"
            android:layout_height="65dp"
            android:text="DEL" />

        <Button
            android:id="@+id/buttonchuyi"
            android:layout_width="100dp"
            android:layout_height="65dp"
            android:text="/" />

        <Button
            android:id="@+id/button7"
            android:layout_width="100dp"
            android:layout_height="65dp"
            android:text="7" />

        <Button
            android:id="@+id/button8"
            android:layout_width="100dp"
            android:layout_height="65dp"
            android:text="8" />

        <Button
            android:id="@+id/button9"
            android:layout_width="100dp"
            android:layout_height="65dp"
            android:text="9" />

        <Button
            android:id="@+id/buttoncheng"
            android:layout_width="100dp"
            android:layout_height="65dp"
            android:text="*" />

        <Button
            android:id="@+id/button4"
            android:layout_width="100dp"
            android:layout_height="65dp"
            android:text="4" />

        <Button
            android:id="@+id/button5"
            android:layout_width="100dp"
            android:layout_height="65dp"
            android:text="5" />

        <Button
            android:id="@+id/button6"
            android:layout_width="100dp"
            android:layout_height="65dp"
            android:text="6" />

        <Button
            android:id="@+id/buttonjian"
            android:layout_width="100dp"
            android:layout_height="65dp"
            android:text="-" />

        <Button
            android:id="@+id/button1"
            android:layout_width="100dp"
            android:layout_height="65dp"
            android:text="1" />

        <Button
            android:id="@+id/buttontwo"
            android:layout_width="100dp"
            android:layout_height="65dp"
            android:text="2" />

        <Button
            android:id="@+id/button3"
            android:layout_width="100dp"
            android:layout_height="65dp"
            android:text="3" />

        <Button
            android:id="@+id/buttonjia"
            android:layout_width="100dp"
            android:layout_height="65dp"
            android:text="+" />


        <Button
            android:id="@+id/buttonyuliu"
            android:layout_width="100dp"
            android:layout_height="65dp"
            android:text="预留" />

        <Button
            android:id="@+id/button0"
            android:layout_width="100dp"
            android:layout_height="65dp"
            android:text="0" />

        <Button
            android:id="@+id/buttondian"
            android:layout_width="100dp"
            android:layout_height="65dp"
            android:text="." />

        <Button
            android:id="@+id/buttondengyu"
            android:layout_width="100dp"
            android:layout_height="65dp"
            android:text="=" />


    </GridLayout>


</LinearLayout>

4.1.3网格布局为5行4列,

然后完善每个按钮,如下图所示:

androidstudio课程设计 android课程设计总结_java_05

然后更改manifest,将主界面显示为计算机界面,

androidstudio课程设计 android课程设计总结_android_06

SDK必须要更新

·build tools 必须;
·SDK Tools 必须;
·SDK Platform-tools 必须;
·Android Support 强烈建议安装;
·SDK Platform 必须至少安装一个版本;
·System Image 建议安装;
·SDK Samples 建议安装;

5.BroadcastReceiver广播的简单用例
5.1、创建广播接收器类:

public class MyReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // 处理接收到的广播
    }
}

 
5.2、在AndroidManifest.xml文件中注册广播接收器:

<receiver android:name=".MyReceiver">
    <intent-filter>
        <action android:name="android.intent.action.MY_BROADCAST"/>
    </intent-filter>
</receiver>

5.3、发送广播:

Intent intent = new Intent("android.intent.action.MY_BROADCAST");
sendBroadcast(intent);

在这个示例中,我们注册了一个广播接收器来处理名为“android.intent.action.MY_BROADCAST”的广播。然后我们使用Intent来发送这个广播,最后我们的广播接收器会执行onReceive()方法来处理广播。
 

6.1个人总结

  在安卓的开发中,首先学习了安卓的主资源布局控件,然后在学习到了java代码所使用的逻辑知识。从开始的单用布局activity_main再到后面的MainActivity,学习到了许多知识,但是我的自学能力和自觉性还是不够强,始终无法学习到非常精妙的程度,适配器也还是不够熟练,在暑假的时候,我希望我更能系统化的学习安卓这门课程!