【Android】构建安卓项目过程中的一些细节问题全记录

简介: 前言 距离安卓项目结束已经过去了好几天,之后很长一段时间我应该都不会再写和安卓有关的项目了。今天偶然翻到之前写的笔记,想了想还是决定整理出来,希望对后来要完成课设的学弟学妹们有帮助。
本文首发于稀土掘金。该平台的作者 逐光而行 也是本人。

前言

距离安卓项目结束已经过去了好几天,之后很长一段时间我应该都不会再写和安卓有关的项目了。今天偶然翻到之前写的笔记,想了想还是决定整理出来,希望对后来要完成课设的学弟学妹们有帮助。

(因为课设用到的一些包、组件都是旧的,而且不允许用框架,必须写原生Java或者Kotlin,所以以下一些经验不适用于实际项目开发。)

构建原生安卓应用

  • 不希望图标在res目录下的每个文件夹都出现一次的话就用 vector assert
  • 在newInstance()里面new了fragment之后记得setArgument并且在oncreate()里面get(官方模板写法由来),否则可能会在旋转屏幕时触发空指针异常

image.png

  • 官方推荐使用FragmentContainerView关联activity和fragment。

有两种方式,一是静态添加到xml文件。

image.png

二是动态添加,在xml文件中不要指明目标的最后一行,在activity中首次创建实例时再动态添加。

  • Gradle每次都会下载哪怕是同一版本的文件:即使是同一版本,gradle-wrapper.jar的url路径也不同(是由哈希方法产生的),基数会在32~36之间变化:

private String getHash(String string) {
    try {
        MessageDigest messageDigest = MessageDigest.getInstance("MD5");
        byte[] bytes = string.getBytes();
        messageDigest.update(bytes);
        return new BigInteger(1, messageDigest.digest()).toString(36);
    } catch (Exception e) {
        throw new RuntimeException("Could not hash input string.", e);
    }
}
  • xml文件中,为什么会同时出现android:和tools:后接同一个属性?

tools可理解为是预览界面用的。
改了tools后的相关属性,在split或者design那里能立即看到效果,但是它在app正式运行的时候不会存在。android:则相反,正在写界面时看不到,但是正式运行时以它为准。

  • 为安卓应用添加网络访问权限:
<uses-permission android:name="android.permission.INTERNET"/>

!!! 注意!!! 没有搜索结果第一条写的尾标签。不要被误导了!!!

  • RecyclerView:展示尽可能多的内容的同时,使消耗内存尽可能小

原理:当下滑屏幕的时候,上面的view的空间没有被destroy,而是被重新利用以显示当前的。(有种即时渲染的意味)

列表(或网格)中每个单独的元素由viewholder定义,viewholder创建之初是不含数据的,是recyclerview将数据绑定到上面。这个viewholder用于定义列表项的功能表现。

要为viewholder配一个适配器(重写以下三个方法:onCreateViewHolder()、onBindViewHolder()、getItemCount())

  • 想要在xml页面中包含另一页面部分(如导航栏),可以用类似以下的写法

(即复用组建的时候不需要重复粘贴代码,include即可)


<include layout="@layout/layout_bottom_navigation_view"/>
  • 从网上找了个组件库,用上去之后发现4年前已经停止维护了,该库封装的组件的某个方法已于今年被弃用,大家用组件库的时候一定要看清楚啊!

勘误:官方文档显示:
BottomNevigationView中,被弃用的是:setOnNavigationItemReselectedListener和setOnNavigationItemSelectedListener,截至目前应该换成setOnItemSelectedListener,网上有些文章好像说反了。

  • 底部导航栏配合fragment使用有三种方式:

    • FrameLayout + FragmentTransaction
    • ViewPager
    • 配合nevigation
  • activity转换为fragment只需要注意以下三点转换:

    1. 将activity的onCreate()中的代码放到fragment的OnCreateView()
    2. 将原来的下述表达修改为下下述:
 super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_set);
  View view = View.inflate(getActivity(),R.layout.fragment_set,null);
3.将原来的this替换为getActivity()
4.在原来的findViewById前加上view.
相关文章
|
7天前
|
IDE Android开发 iOS开发
探索Android与iOS开发的差异:平台选择对项目成功的影响
【9月更文挑战第27天】在移动应用开发的世界中,Android和iOS是两个主要的操作系统平台。每个系统都有其独特的开发环境、工具和用户群体。本文将深入探讨这两个平台的关键差异点,并分析这些差异如何影响应用的性能、用户体验和最终的市场表现。通过对比分析,我们将揭示选择正确的开发平台对于确保项目成功的重要作用。
|
10天前
|
存储 Java Android开发
探索安卓应用开发:构建你的第一个"Hello World"应用
【9月更文挑战第24天】在本文中,我们将踏上一段激动人心的旅程,深入安卓应用开发的奥秘。通过一个简单而经典的“Hello World”项目,我们将解锁安卓应用开发的基础概念和步骤。无论你是编程新手还是希望扩展技能的老手,这篇文章都将为你提供一次实操体验。从搭建开发环境到运行你的应用,每一步都清晰易懂,确保你能顺利地迈出安卓开发的第一步。让我们开始吧,探索如何将一行简单的代码转变为一个功能齐全的安卓应用!
|
5天前
|
Java Maven 开发工具
第一个安卓项目 | 中国象棋demo学习
本文是作者关于其第一个安卓项目——中国象棋demo的学习记录,展示了demo的运行结果、爬坑记录以及参考资料,包括解决Android Studio和maven相关问题的方法。
第一个安卓项目 | 中国象棋demo学习
|
23天前
|
JavaScript 前端开发 Android开发
让Vite+Vue3项目在Android端离线打开(不需要起服务)
让Vite+Vue3项目在Android端离线打开(不需要起服务)
|
23天前
|
IDE 开发工具 Android开发
安卓与iOS开发对比:平台选择对项目成功的影响
【9月更文挑战第10天】在移动应用开发的世界中,选择正确的平台是至关重要的。本文将深入探讨安卓和iOS这两大主要移动操作系统的开发环境,通过比较它们的市场份额、开发工具、编程语言和用户群体等方面,为开发者提供一个清晰的指南。我们将分析这两个平台的优势和劣势,并讨论如何根据项目需求和目标受众来做出最佳选择。无论你是初学者还是有经验的开发者,这篇文章都将帮助你更好地理解每个平台的特性,并指导你做出明智的决策。
|
23天前
|
开发框架 Android开发 iOS开发
探索安卓与iOS开发的差异:构建未来应用的指南
在移动应用开发的广阔天地中,安卓与iOS两大平台各占半壁江山。本文将深入浅出地对比这两大操作系统的开发环境、工具和用户体验设计,揭示它们在编程语言、开发工具以及市场定位上的根本差异。我们将从开发者的视角出发,逐步剖析如何根据项目需求和目标受众选择适合的平台,同时探讨跨平台开发框架的利与弊,为那些立志于打造下一个热门应用的开发者提供一份实用的指南。
48 5
|
26天前
|
Java 开发工具 Android开发
安卓与iOS开发:平台选择对项目成功的影响
在移动应用开发的浩瀚宇宙中,安卓和iOS两大星系璀璨夺目,各自拥有独特的光芒。本文将穿梭于这两个平台之间,探讨它们在开发环境、用户群体、成本效益等方面的差异,以及这些差异如何影响一个项目的航向和终点。我们将从初学者的视角出发,逐步深入,揭示选择合适平台的重要性,以及如何根据项目需求做出明智的选择。无论你是即将启航的新手开发者,还是已经在这片星海中航行的老手,这篇文章都将为你提供有价值的导航信息。
41 2
|
1月前
|
Java 开发工具 Android开发
探索安卓与iOS开发的差异:平台选择对项目的影响
在移动应用开发的广阔天地中,安卓和iOS两大平台各自占据着重要的位置。本文旨在深入探讨这两个平台在开发过程中的主要差异,包括编程语言、开发工具、用户界面设计、性能优化以及市场分布等方面。通过对比分析,我们将揭示平台选择如何影响项目规划、执行效率和最终成果,为开发者在选择适合自己项目需求的平台时提供参考依据。
|
26天前
|
开发工具 Android开发 iOS开发
探索安卓与iOS开发的差异:构建未来应用的关键考量
在数字时代的浪潮中,安卓和iOS这两大操作系统如同双子星座般耀眼夺目,引领着移动应用的潮流。它们各自拥有独特的魅力和深厚的用户基础,为开发者提供了广阔的舞台。然而,正如每枚硬币都有两面,安卓与iOS在开发过程中也展现出了截然不同的特性。本文将深入剖析这两者在开发环境、编程语言、用户体验设计等方面的显著差异,并探讨如何根据目标受众和项目需求做出明智的选择。无论你是初涉移动应用开发的新手,还是寻求拓展技能边界的资深开发者,这篇文章都将为你提供宝贵的见解和实用的建议,帮助你在安卓与iOS的开发之路上更加从容自信地前行。
|
Java Android开发
【Android 启动过程】Activity 启动源码分析 ( ActivityThread 流程分析 二 )
【Android 启动过程】Activity 启动源码分析 ( ActivityThread 流程分析 二 )
228 0