【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.
相关文章
|
8月前
|
存储 消息中间件 人工智能
【03】AI辅助编程完整的安卓二次商业实战-本地构建运行并且调试-二次开发改注册登陆按钮颜色以及整体资源结构熟悉-优雅草伊凡
【03】AI辅助编程完整的安卓二次商业实战-本地构建运行并且调试-二次开发改注册登陆按钮颜色以及整体资源结构熟悉-优雅草伊凡
277 3
|
8月前
|
开发工具 Android开发
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
864 11
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
|
8月前
|
缓存 Unix Android开发
Android安卓项目调试之Gradle 与 Gradle Wrapper的概念以及常用gradle命令深度详解-优雅草卓伊凡
Android安卓项目调试之Gradle 与 Gradle Wrapper的概念以及常用gradle命令深度详解-优雅草卓伊凡
985 8
|
8月前
|
存储 API Android开发
【02】完整的安卓二次商业实战-配置gradle-构建打包原生安卓项目-调试本地运行模拟器-优雅草伊凡
【02】完整的安卓二次商业实战-配置gradle-构建打包原生安卓项目-调试本地运行模拟器-优雅草伊凡
821 4
【02】完整的安卓二次商业实战-配置gradle-构建打包原生安卓项目-调试本地运行模拟器-优雅草伊凡
|
8月前
|
Java 开发工具 Maven
【01】完整的安卓二次商业实战-详细的初级步骤同步项目和gradle配置以及开发思路-优雅草伊凡
【01】完整的安卓二次商业实战-详细的初级步骤同步项目和gradle配置以及开发思路-优雅草伊凡
1113 6
|
API 开发工具 Android开发
4.0、Android Studio配置你的构建
Android构建系统编译你的app资源和源码并且打包到APK中,你可以用来测试,部署,签名和发布。
1333 0
|
7月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1376 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
7月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1003 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
7月前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1098 4
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
7月前
|
移动开发 Android开发
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
376 0