类微信移动开发Demo

小白的第一次移动程序开发

PS:这是一位开发小白的第一篇blog
之前没有过安卓开发经验,本学期选了移动互联网开发课程,希望可以给自己带来一些开发经验,真正的锻炼一下自己的开发能力,因为是第一次写blog,写的不好请见谅🎉

附上git上的项目链接🎈

背景介绍

类微信界面开发,是本学期在移动互联网开发课程中做的第一小项目,规模不大,但还是学到了不少东西😏:

  1. 开发工具 :Android Studio;
  2. 后台语言 :Java;
  3. 基本功能 :点击按钮,实现主界面的切换。

前期准备

  1. 下载、安装Android Studio
    小女子用的是Android Studio(后简称AS),用过AS的直接忽略,没用过的可参考:
    下载:https://developer.android.com/studio
    安装流程:https://www.cnblogs.com/xiadewang/p/7820377.html;
  2. gradle同步问题
    可参考:https://jingyan.baidu.com/article/597a06430710ca312b52430b.html;
  3. SDK配置
    在安装AS时,先不要下载SDK,进入AS之后,SDK Manager下载
    点击SDK Manager后,进入以下界面,选择你需要的SDK版本:
    在这里插入图片描述
  4. AVD配置
    进入AS之后,在Tools下选择AVD Manager,点击选择自己想要的模拟器。在这里插入图片描述

项目结构

  1. project
    选择project可以查看项目的完整结构:
    在这里插入图片描述
  2. Android
    选择android可以查看项目的主干结构(个人比较习惯选择这种目录模式,比较简洁):
    在这里插入图片描述

Git/Gitee上管理项目

  1. github上注册账号
  2. 下载git工具
    官网下载:https://git-scm.com/downloads
  3. 上传本地项目
    教程参考:https://www.jianshu.com/p/c5f3979acecf

项目运行效果截图

  1. 微信界面
    在这里插入图片描述

  2. 朋友界面
    在这里插入图片描述

  3. 通讯界面
    在这里插入图片描述

  4. 设置界面
    在这里插入图片描述

我Git上的项目🎈

链接: Git上发布的项目WeChat_Demo.
链接: Gitee上发布的项目

项目核心代码🔑

  1. 初始化组件
	private void initFragment(){
        fm=getFragmentManager();
        FragmentTransaction transaction=fm.beginTransaction();
        transaction.add(R.id.id_content,mTab01);//第一个参数为int型
        transaction.add(R.id.id_content,mTab02);
        transaction.add(R.id.id_content,mTab03);
        transaction.add(R.id.id_content,mTab04);
        transaction.commit();
    }
  1. 中间主要页面的切换函数
private void selectfragment(int i){
        FragmentTransaction transaction=fm.beginTransaction();
        hidefragment(transaction);
        switch (i){
            case 0:
                transaction.show(mTab01);
                mImgWeixin.setImageResource(R.drawable.tab_weixin_pressed);
                break;
            case 1:
                transaction.show(mTab02);
                mImgFrd.setImageResource(R.drawable.tab_find_frd_pressed);
                break;
            case 2:
                transaction.show(mTab03);
                mImgAddress.setImageResource(R.drawable.tab_address_pressed);
                break;
            case 3:
                transaction.show(mTab04);
                mImgSettings.setImageResource(R.drawable.tab_settings_pressed);
                break;
            default:
                break;
        }
        transaction.commit();
}
  1. 按钮点击事件
public void onClick(View v){//点击响应
        resetimg();
        switch (v.getId()){
            case R.id.id_tab_weixin:
                selectfragment(0);
                break;
            case R.id.id_tab_friend:
                selectfragment(1);
                break;
            case R.id.id_tab_contact:
                selectfragment(2);
                break;
            case R.id.id_tab_settings:
                selectfragment(3);
                break;
            default:
                break;
        }
}
  1. 其他fragment事件
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.tab01, container, false);
    }

遇到的问题及解决方法❗

  1. Android和Androidx:Androidx是向下兼容安卓版本的时候产生的支持库。我新建项目AS默认选中了AndroidX,但是Androidx与项目中很多依赖发生了冲突。
    如何去掉默认选中AndroidX的方法:Go to the SDK manager in android studio and uncheck android Q ( 29 );或者修改当前项目gradle.properties:
android.useAndroidX=true
android.enableJetifier=true
  1. 关于引入的class:将MainActivity.java文件中import的Androidx.* class文件修改成Android.* class后,出现了如下图所示问题:在这里插入图片描述
    原因:由于在MainActivity.java文件中用了其他Java文件中的变量,而其他Java文件中引入了Androidx.* class;
    解决方法:将所有java文件中的Androidx.* class删掉之后就解决了问题。
  2. Xml文件的图标问题:删除Androidx.* class后,xml文件在显示时,图片的引入会出现如下问题(图标引入失败):
    在这里插入图片描述
    解决方法:将srcCompat改成android:src
    在这里插入图片描述
    在这里插入图片描述
  3. 按钮的点击属性
    属性设置:设置按钮的clickable属性才能实现点击
android:clickable="false"

项目总结✔

  1. 第一次做移动开发的项目,项目规模不大,但是通过本次项目的练习,对AS的使用熟悉了不少;
  2. 我们分了两节课完成这个小Demo,第一节课完成界面的基本UI设计,这一阶段基本使用的是拖拽+属性设置完成,没有什么逻辑上的难点,值得注意的是,在设计UI时,要注意把一个大的界面分成多个小的组件,再在整个界面中利用FrameLayout引用每个小的部分;
  3. 在后台开发过程中,有一个Androidx的问题,需要在今后的开发过程引起注意!📝
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章