IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android开发APP门户界面设计(作业一 -> 正文阅读

[移动开发]Android开发APP门户界面设计(作业一

Android开发APP门户界面设计(作业一

1、内容:请根据课程实操实现APP门户界面框架设计,至少包含4个tab页,能实现tab页之间的点击切换;
2、技术:使用布局(layouts)和分段(fragment),对控件进行点击监听;

一、项目开发关键步骤

1.new一个project,一直next,然后选择保存路径,点击finish。这里的保存路径最好不要有空格,文件的命名也可以有大小写,但是AS在识别的时候是小写,会出现TYPO warning(不过可以不care,对后续程序执行没有任何影响。

在这里插入图片描述
2.给activity_main.xml操作一番。因为一个程序不能是单一的结构,并且如果直接在主xml文件里面操作发生错误的话会很麻烦,所以我们在设计的时候最好是include自己新建的xml文件到activity_main.xml里面。(毕竟错了也好删哈哈
如图,在layout文件夹里右键点击,new一个layout resource file
一下是本人新建的top.xml和bottom.xml:
在这里插入图片描述
top.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:layout_weight="1"
    android:background="#393030">

    <TextView
        android:id="@+id/textView_top"
        android:layout_width="match_parent"
        android:layout_height="80dp"
        android:textSize="28sp"
        android:textColor="#FD98BA"
        android:text="MyWechat"
        android:gravity="center"
        />
</LinearLayout>

在这里插入图片描述
bottom.xml部分代码

<?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"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    android:layout_weight="1"
    android:background="#393030">

    <LinearLayout
        android:id="@+id/linearlayout_talk"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/imageView_talk"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"

            app:srcCompat="@drawable/talk" />

        <TextView
            android:id="@+id/textView_talk"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="聊天"
            android:textAlignment="center"
            android:textColor="#FD90B5" />
    </LinearLayout>

3.建立fragment,用于点击下面的图表能够切换页面。在自己的com.example.MyApplication文件夹上右键新建,如图。
在这里插入图片描述
命个名,在下面的layout文件夹里会自动生成相应的xml文件。
在这里插入图片描述
4.在每个fragment对应的xml里设置你想展示的界面。
例如:
在这里插入图片描述
5.然后然后就是MainActivity.java的编写了。具体怎么写参考第二大点核心技术。

二、核心技术

*相应的技术要求
1、findViewById()函数
定义如下:

public <T extends View> T findViewById(@IdRes int id) {
        return getDelegate().findViewById(id);
    }

简单来说,就是将xml里的View传值到主函数里面。在主函数的类里面没有你layout文件里的各种View,所以要在主函数的类里新建一个和你需要引用View同类型的对象,然后通过findViewById()建立起联系,然后进行各种操作。

2、FragmentManager和FragmentTrasaction:
FragmentManager顾名思义是fragment管理器,二FragmentTransaction是由FragmentManager初始化的一种处理fragment的类型,也叫事务。
初始化过程如下:

fragmentManager=getSupportFragmentManager();
 FragmentTransaction transaction=fragmentManager.beginTransaction();

其中fragmentmanager是MainActivity.java类里面的一个成员变量,在主函数oncreate或者其他自己构造的函数中可以直接初始化并使用。
而transaction是一种动态的处理事务,在每次调用之后都需要使用commit()函数来将它关闭。具体解析见Java中的事务及使用
在写FragmentManager初始化语句的时候,AS提词器会出现多个FragmentManager,看:
在这里插入图片描述
两个FragmentManager分别来自不同的包。在使用的时候,如果FragmentManager使用了androidx.fragment.app包,那transaction就不要使用android.app包了。在这一点可以参考这个姐姐写的区别required android.app.fragment,required:‘android.app.Fragment’

3、监听
安卓里设置监听有四种方法,具体见这位大哥写的Android开发-设置监听器的四种方法
写得真的很详细!
本人用的第一种,即用接口实现监听。
首先需要MainActivity继承一个onClickListener接口,可以是View.onClickListener也可以是button.onClickListener,这根据你需要点击的控件类型来定。继承了之后会报错,这时候根据应用提示在MainActivity中插入onClick函数就好了。
其次是在oncreate函数里设置一个监听器,

Linearlayout1.setOnClickListener(this);

然后就是第一步自动生成的onClick函数的编写了。你想要的点击效果,切换什么fragment,字体变成什么颜色都可以写在onclick函数里。
*运行结果展示
【初始界面】
有喜欢粉墨的吗@_@
在这里插入图片描述
【点击下面的每个图标,在页面切换的同时,图标也会变成相应的水果】
在这里插入图片描述
嗯。。就这样。。。很简单是不是。。天知道我弄这个弄了几天(我承认我是vegetabledog,哭

或许有人写好以后打开app会闪退,debug出来的logcat日志这么写的:
在这里插入图片描述
知道我是为什么报错吗,为了这个错,本人,不知道重新建立了几个项目!!最后发现,老师在上课的时候改了导入java包的名字。
android.app.Fragment和androidx.appcompat.app.Fragment是不一样的!
第一个可以兼容多版本安卓,第二个只支持较新版本的安卓。but如果你用的AndroidStudio是较新的版本,最好最好用Androidx.开头的包。不然在代码没错的情况下也会闪退!

还有,别以为安卓提词器好用就可以闭着眼睛看到函数名就按enter,很多函数比如add就会被重载好几次,写的时候要不仅看函数名还要看参数。像我这样的新手如果因为这种小问题出错的话后果不堪设想。。

头一次这么zqsg地写博客,突然发现写博客还挺有用的(

有些操作老师讲的时候按部就班地跟着做也觉得没啥,下来细想就觉得里面有大大的学问(笑)

综上所述,写代码不是最烦的,最烦的是由各种不知名原因引起的错误,解决完以后头发都没剩几根了。所以,在编写文件,设置参数,包括给变量起名的时候都要谨慎再谨慎。如果出现了非语法错误,也不要恐慌,尝试看看logcat日志(看第一行就行),或者从头再来,总之错误都不是凭空而出的,都是因为某个操作,某个语句没写好而造成的。相反,既然是错误就一定有错误的解决方法,在错误被解决了之后,你的境界就会往上生一个level。

祝大家平安健康!

这是本人的giteezsysandroid_toohard

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-10-07 13:57:32  更:2021-10-07 13:59:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 23:46:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码