Android学习一课一得

2023-11-16

Android学习一课一得
在这里插入图片描述

引言

本学期我在课程中学习了Android开发,并深入了解了这个强大的移动应用开发平台。通过学习和实践,我对Android的开发流程、核心概念和常见技术有了基本的理解。在本篇博客中,我将分享我在Android开发方面的学习心得和经验,以及对未来发展的展望。

1.学习入门

1.1Android开发入门

在本学期的Android课程中,我首先学习了Android的基本概念和架构。我了解了Android应用的组件和生命周期,如Activity、Fragment和Service等。通过编写简单的Hello World应用程序,我掌握了Android开发的基本流程和工具,如Android Studio和布局编辑器。这为我打下了坚实的基础,让我能够深入学习和实践更高级的Android开发技术。``

1.2用户界面设计与布局

在Android开发中,良好的用户界面设计是至关重要的。我学习了Android的布局系统,包括线性布局LinearLayout、相对布局RelativeLayout和约束布局ConstraintLayout。以及Android的基本控件,TextView文本控件、EditText,Image控件、 Button控件。我了解了如何使用XML来定义用户界面,并掌握了常用UI组件的使用方法,如按钮、文本框和图像视图等。通过实践项目,我学会了创建美观、友好的界面。

1.3数据存储与持久化

Android应用通常需要与数据进行交互和持久化。我文件存储的读写、学习了使用SQLite数据库进行本地数据存储,并能够进行简单的增删改查操作。我还了解了如何使用SharedPreferences进行轻量级数据存储。这些技术使我能够在应用中实现数据的有效管理和存储。

1.4网络通信与数据获取

在现代移动应用中,与网络进行通信和获取数据是非常常见的需求。我了解了如何使用Android的网络API进行HTTP请求和数据解析。我了解了常用的网络库,如Retrofit和Volley,并学会了处理网络请求的异步操作。这让我能够开发出与服务器进行数据交互的功能强大的应用程序。我还学习了如何使用OAuth进行用户认证和授权,提高了应用的安全性。

1.5结语

通过本学期的Android开发学习,我深入了解了这个强大的移动应用开发平台,并获得了实际的开发经验。我掌握了Android开发的基本流程、核心概念和常用技术,并能够开发功能丰富、用户友好的Android应用。我对Android的未来发展充满信心,期待在未来的实践中继续深入研究和探索,不断提升自己的Android开发技能。

2.学习成果

2.1学习经验与方法

1.学习是自己的事,其他任何东西都只是辅助你的东西,重要的是自己的学习态度。
2.设置自己的学习阶段性目标,一定要确保自己是真正学习吸收,切记有效学习。
3.真正学习的过程中,一定是有点痛苦的。坚持下去,一定会收获很多的。
4.勤动手多思考

2.2在Android应用中实现一个简单的 “Hello, World!”

  1. 在 MainActivity.java 文件中以将以下代码添加到 onCreate() 方法中:
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    TextView textView = findViewById(R.id.textView);
    textView.setText("Hello, World!");
}

2 .确保在布局文件中有一个 TextView 组件,并分配了一个 id 属性,如下所示:

<TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="24sp"
    android:textStyle="bold"
    android:layout_gravity="center"
    />

当然这只是一个简单的示例,可以根据需要进行更多的自定义和功能扩展。

2.3项目展示(部分)

在这里插入图片描述
*
在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/2620264dee734c829c08e50805740b1d.png
部分代码,完整代码可留言获取

package com.example.administrator.myshare;

import android.app.ActionBar;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class LineActivity extends AppCompatActivity {
    Button action_show,action_hide;
    ActionBar actionBar;
    //声明控件
    private Button mBtnLogin;
    private Button mBtnTest;
    private EditText mEtUser;
    private EditText mEtPassword;
    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_line);

        //找到控件
        mBtnLogin = (Button)findViewById(R.id.btn_login);
        mBtnTest = (Button)findViewById(R.id.btn_Test);
        mEtUser= (EditText)findViewById(R.id.et_1);
        mEtPassword  = (EditText)findViewById(R.id.et_2);
        //实现跳转 - - - 方法一

        mBtnTest.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = null;
                intent = new Intent(LineActivity.this, LoginActivity.class);
                startActivity(intent);
            }
        });
        //匹配对应的用户名
        mBtnLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String username = mEtUser.getText().toString();
                String password = mEtPassword.getText().toString();
                //设置弹出内容
                String ok = "登录成功";
                String fail = "登录失败,账户或密码错误";
                Intent intent = null;
                if(username.equals("a")&&password.equals("123")){
                    Toast.makeText(getApplicationContext(), ok, Toast.LENGTH_SHORT).show();
                    intent =  new Intent(LineActivity.this,MainActivity.class);
                    intent.putExtra("zh", username);
                    intent.putExtra("mm",password);
                    startActivity(intent);
                }else{
                    Intent intent1 = getIntent();
                    String a1 = intent1.getStringExtra("zh");
                    String a2 = intent1.getStringExtra("mm");
                    if(username.equals(a1)&&password.equals(a2)){
                        Toast.makeText(getApplicationContext(),ok,Toast.LENGTH_SHORT).show();
                        intent1 =  new Intent(LineActivity.this,LoginActivity.class);
                        intent1.putExtra("zh", username);
                        intent1.putExtra("mm",password);
                        startActivity(intent1);
                    }else{
                        Toast toast  = Toast.makeText(getApplicationContext(),fail,Toast.LENGTH_SHORT);
                        toast.setGravity(Gravity.CENTER,0,0);
                        toast.show();
                    }
                }
            }
        });
    }
}


3.总结

这是一份简要的Android一课一得博文,2023,保持热爱,奔赴山海。

参考资料:
Android开发者官网

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android学习一课一得 的相关文章

  • 如何快速自动发送FCM或APNS消息?

    我正在开发一项后端服务 通过 FCM 或 APNS 向移动应用程序发送推送通知 我想创建一个可以在一分钟内运行的自动化测试 并验证服务器是否可以成功发送通知 请注意 我不一定需要检查通知是否已送达 只需检查 FCM 或 APNS 是否已成功
  • Android Studio 3.0 Canary 9 - 无法解析包

    我在 Android Studio 3 0 Canary 9 中遇到几个错误 这些错误是 无法解析 android 软件包 下面列出了一些错误 我刚刚安装了 SDK 的所有额外软件包 但仍然收到 gradle 构建错误 Error 82 1
  • SearchView过滤ListView

    我已经实现了搜索视图来过滤我的列表视图项目 当我输入任何文本时 它会过滤列表 但当我退出搜索视图时 它不会返回原始列表项 public class PlacesListAdapter extends ArrayAdapter
  • Android 30+ 中的视频捕获意图 - 只有所有者才能与待处理项目交互

    我正在尝试在我的应用程序上捕获视频 它可以在 android API 30 以下运行 但不能在 30 以上运行 似乎在 sdk 30 之后 android 不允许完全读取外部存储 作用域存储 我目前遇到这个错误 java lang Ille
  • 无法获取log.d或输出Robolectrict + gradle

    有没有人能够将 System out 或 Log d 跟踪从 robolectric 测试输出到 gradle 控制台 我在用Robolectric Gradle 测试插件 https github com robolectric robo
  • 当文本输入聚焦在 React Native for Android 的底部工作表上时,视图移出屏幕

    我正在使用图书馆 https github com osdnk react native reanimated bottom sheet https github com osdnk react native reanimated bott
  • 找不到处理意图 com.instagram.share.ADD_TO_STORY 的活动

    在我们的 React Native 应用程序中 我们试图让用户根据视图 组件中的选择直接将特定图像共享到提要或故事 当我们尝试直接使用 com instagram share ADD TO FEED 进行共享时 它以一致的方式完美运行 但是
  • 在画布上绘图

    我正在编写一个 Android 应用程序 它可以在视图的 onDraw 事件上直接绘制到画布上 我正在绘制一些涉及单独绘制每个像素的东西 为此我使用类似的东西 for int x 0 x lt xMax x for int y 0 y lt
  • 无法访问 com.google.android.gms.internal.zzbfm 的 zzbfm 类文件未找到

    我正在将我的 Android 应用程序项目从GCM to FCM 为此 我使用 Android Studio 中的 Firebase 助手工具 并遵循 Google 开发人员指南中的说明 一切都很顺利 并将我的应用程序代码更改为FCM根据助
  • Android MediaExtractor seek() 对 MP3 音频文件的准确性

    我在使用 Android 时无法在eek 上获得合理的准确度MediaExtractor 对于某些文件 例如this one http www archive org download emma solo librivox emma 01
  • 发布android后更改应用内购买项目的价格

    在 Google Play 上发布后 是否可以更改应用内购买商品的价格 我假设该应用程序也已发布 完整的在线文档位于http developer android com http developer android com也http sup
  • JavaMail 只获取新邮件

    我想知道是否有一种方法可以在javamail中只获取新消息 例如 在初始加载时 获取收件箱中的所有消息并存储它们 然后 每当应用程序再次加载时 仅获取新消息 而不是再次重新加载它们 javamail 可以做到这一点吗 它是如何工作的 一些背
  • 获取当前 android.intent.category.LAUNCHER 活动的实例

    我创建了一个库项目 并在多个应用程序之间共享 我实现了一个简单的会话过期功能 该功能将在一段时间后将用户踢回到登录屏幕 登录屏幕活动是我的主要活动 因此在清单中它看起来像这样
  • iphone sqlite 静态链接?

    有人静态链接 sqlite 而不是使用动态链接 吗 我遇到的问题是 越狱手机的用户没有与普通 iPhone 所采用的 sqlite 版本相同的版本 因此导致崩溃 我假设在我的应用程序中静态链接已知版本的 sqlite 就是答案 我需要全文支
  • Android 中麦克风的后台访问

    是否可以通过 Android 手机上的后台应用程序 服务 持续监控麦克风 我想做的一些想法 不断聆听背景中的声音信号 收到 有趣的 音频信号后 执行一些网络操作 如果前台应用程序需要的话 后台应用程序必须能够智能地放弃对麦克风的访问 除非可
  • .isProviderEnabled(LocationManager.NETWORK_PROVIDER) 在 Android 中始终为 true

    我不知道为什么 但我的变量isNetowrkEnabled总是返回 true 我的设备上是否启用互联网并不重要 这是我的GPSTracker class public class GPSTracker extends Service imp
  • 增加活动的屏幕亮度

    显然 Android 操作系统中至少有三种不同的技术可以改变屏幕亮度 其中两个在纸杯蛋糕之后不再起作用 而第三个被接受的技术显然有一个错误 我想在单视图活动开始时增加屏幕亮度 然后在活动结束时将亮度恢复为用户设置 没有按钮 没有第二个视图或
  • 一次显示两条Toast消息?

    我希望在一个位置显示一条 Toast 消息 并在另一位置同时显示另一条 Toast 消息 多个 Toast 消息似乎总是按顺序排队和显示 是否可以同时显示两条消息 是否有一种解决方法至少可以提供这种外观并且不涉及扰乱活动布局 Edit 看来
  • 实现滚动选择 ListView 中的项目

    我想使用 ListView 您可以在其中滚动列表来选择一个项目 它应该像一个 Seekbar 但拇指应该是固定的 并且您必须使用该栏来调整它 我面临的一个问题是 我不知道这种小部件是如何调用的 这使得我很难搜索 所以我制作了下面这张图片 以
  • 按日期对 RecyclerView 进行排序

    我正在尝试按日期对 RecyclerView 进行排序 但我尝试了太多的事情 我不知道现在该尝试什么 问题就出在这条线上适配器 notifyDataSetChanged 因为如果我不放 不会显示错误 但也不会更新 recyclerview

随机推荐

  • 管理一年,领悟一生:迷茫、洞见与成长

    领导力跟你做了多少年管理 管过多少人 没有直接的关系 你开悟了 一年就能管得井井有条 不开悟 十年也是一塌糊涂 1 引言 大家好 我是苍何 相信作为技术人的成长路线大家都有了解吧 大家普遍所了解的就是两个路线 技术管理和架构师 而成为架构师
  • ue4大气纹理

    UE4的大气纹理 在 class FAtmosphereTextures public FRenderResource 成员变量上涉及到了辐射 投射 和散射 分三个部分 首先放入一个commandlist 然后分别就各参数创建RTT 传参数
  • python 中关于推导式生成器的一些总结

    推导式 可以理解为是数据生成方式或者是处理方式 类型 列表 元组 字符串 字典 集合 外部包装的括号决定了返回值类型的 定义 列表推导式 表达式 for循环 if语句 1 对列表中的每项元素进行立方运算 变换功能 a 1 2 3 4 5 6
  • 动态规划(1)

    动态规划 Dynamic Programming 是一种具有分治思想的迭代技术 它用于求解某些复杂的不包含决策过程的最优化问题 其基本思路是将原问题分解为子问题 并保存子问题的求解结果 从而避免不必要的重复计算 动态规划的主要思想就是将复杂
  • Java类、构造方法、对象

    public class Lader 定义类 float above 成员变量 类中有效 float bottom float height float area float area 4 合法 area 4 非法 在方法体中赋值 floa
  • 11月8日 改良射线,蓝图 UE4斯坦福 学习笔记

    修改射线类型 更改了昨天的射线类型 void USInteractionComponent PrimaryInteract 射线 FHitResult FHit 碰撞体 FCollisionObjectQueryParams ObjectQ
  • 为什么TCP建立连接需要三次握手

    TCP 协议是我们几乎每天都会接触到的网络协议 绝大多数网络连接的建立都是基于 TCP 协议的 学过计算机网络或者对 TCP 协议稍有了解的人都知道 使用 TCP 协议建立连接需要经过三次握手 three way handshake 如果让
  • 生鲜电商迎巨变?美菜撤出县城,有菜被集团关停

    生鲜B2B电商是个大生意 但也是个苦生意 随着生鲜从风口摔落 对 大 的渴望逐渐让位于对 苦 的体验 据 财经 报道 知名生鲜B2B平台美菜最近密集业务调整 半年来退出数百个县城和10个中心城市 急剧向平台模式转型 疫情带来的线下餐饮行业变
  • JAVA zip 压缩包 导出

    JAVA 导出 zip压缩文件 代码如下 public void downloading String orderId List
  • SSM之一步一坑:返回JSON格式 中文乱码问号 解决方案

    在使用SSM框架写代码时 偶然间在console控制台发现一个 text plain charset ISO 8859 1 这种数据格式 如下图 当时就感觉有点问题 因为我的项目中使用UTF 8的编码格式 并且在web xml 中也采用了u
  • ubuntu安装高版本python

    ubuntu安装高版本python 以python3 7为例 安装其他版本python更改安装包即可 使用wget拉取安装包的方式 单纯命令行容易报错 1 下载python安装包并解压 wget https www python org f
  • 空值的处理

    1 取空值的时机 1 1不知道取什么值 比如学生登记表 某个学生的年龄忘记填了 1 2不能取值 比如选了课 缺考了 所以成绩表的成绩填空 1 3由于某种原因不便填写 比如一个人的手机号码不便填写 2 空值的产生 2 1没有给属性列赋值 2
  • 数据结构学习(一)数据结构基础

    文章目录 算法与数据结构学习 一 数据结构基础 1 数据结构 1 1 什么是数据结构 1 2 学习数据结构的必要性 2 算法 2 1 怎么衡量算法的好坏 2 1 1 时间复杂度 2 1 2 空间复杂度 2 2 时间复杂度的计算 2 3 常见
  • 【unity】【jit】【游戏开发】讲解ios系统不支持JIT的来龙去脉,以及unity在IOS上需要使用反射时候的替代方案

    标题有点长啊 很彪 所以我们叫彪题 咋地 东北地 你瞅啥 1 带有增高垫IL的c c 语言作为一种高级语言 是不能直接在我们的CPU上来直接运行的 需要编译成IL语言 Intermediate Language 即中间层语言 就是这么高冷
  • 《机器学习实战》第六章 Python3代码-(亲自修改测试可成功运行)

    由于Peter Harrington所著的这本 机器学习实战 中的官方代码是Python2版本的且有一些勘误 使用Python3的朋友运行起来会有很多问题 所以我将自己在学习过程中修改好的Python3版本代码分享给大家 以供大家交流学习
  • STM32 bool

    STM32中基于库V3 5的头文件中 去掉了对bool类型变量的定义 而将它放在了文件stdbool h中 d Keil v5 ARM ARMCC include stdbool h stdbool文件内容如下 stdbool h ISO
  • C++将字符串中包含指定字符串范围内的字符串全部替换

    概述 将指定字符串所在的范围之内的字符串全部替换为指定的字符串 如 源字符串 START dfh待到花开月圆时 两首相顾心相连 END dhussd2434xhuhu是别人十大海归 转换后的字符串 dfh待到花开月圆时 两首相顾心相连 dh
  • XXE漏洞

    何为XXE 简单来说 XXE就是XML外部实体注入 当允许引用外部实体时 通过构造恶意内容 就可能导致任意文件读取 系统命令执行 内网端口探测 攻击内网网站等危害 典型攻击手法 XML又是什么呢 XML用于标记电子文件使其具有结构性的标记语
  • 自动填充固定行数的 GridView

    效果图 代码 C lt script runat server gt 计算数据 这里可以适当修改从数据库中获取
  • Android学习一课一得

    Android学习一课一得 文章目录 引言 1 学习入门 1 1Android开发入门 1 2用户界面设计与布局 1 3数据存储与持久化 1 4网络通信与数据获取 1 5结语 2 学习成果 2 1学习经验与方法 2 2在Android应用中