類微信移動開發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的問題,需要在今後的開發過程引起注意!📝
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章