WeChat_Demo:类微信移动开发
小白的第一次移动程序开发
PS:这是一位开发小白的第一篇blog
之前没有过安卓开发经验,本学期选了移动互联网开发课程,希望可以给自己带来一些开发经验,真正的锻炼一下自己的开发能力,因为是第一次写blog,写的不好请见谅🎉
附上git上的项目链接🎈
- 链接: Git上发布的项目WeChat_Demo.
- 链接: Gitee上发布的项目
背景介绍
类微信界面开发,是本学期在移动互联网开发课程中做的第一小项目,规模不大,但还是学到了不少东西😏:
- 开发工具 :Android Studio;
- 后台语言 :Java;
- 基本功能 :点击按钮,实现主界面的切换。
前期准备
- 下载、安装Android Studio :
小女子用的是Android Studio(后简称AS),用过AS的直接忽略,没用过的可参考:
下载:https://developer.android.com/studio
安装流程:https://www.cnblogs.com/xiadewang/p/7820377.html; - gradle同步问题 :
可参考:https://jingyan.baidu.com/article/597a06430710ca312b52430b.html; - SDK配置 :
在安装AS时,先不要下载SDK,进入AS之后,
点击SDK Manager后,进入以下界面,选择你需要的SDK版本:
- AVD配置 :
进入AS之后,在Tools下选择AVD Manager,点击选择自己想要的模拟器。
项目结构
- project :
选择project可以查看项目的完整结构:
- Android :
选择android可以查看项目的主干结构(个人比较习惯选择这种目录模式,比较简洁):
Git/Gitee上管理项目
- github上注册账号 ;
- 下载git工具 :
官网下载:https://git-scm.com/downloads - 上传本地项目 :
教程参考:https://www.jianshu.com/p/c5f3979acecf
项目运行效果截图
-
微信界面 :
-
朋友界面 :
-
通讯界面 :
-
设置界面 :
我Git上的项目🎈
链接: Git上发布的项目WeChat_Demo.
链接: Gitee上发布的项目
项目核心代码🔑
- 初始化组件:
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();
}
- 中间主要页面的切换函数:
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();
}
- 按钮点击事件:
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;
}
}
- 其他fragment事件:
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.tab01, container, false);
}
遇到的问题及解决方法❗
- 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
- 关于引入的class:将MainActivity.java文件中import的Androidx.* class文件修改成Android.* class后,出现了如下图所示问题:
原因:由于在MainActivity.java文件中用了其他Java文件中的变量,而其他Java文件中引入了Androidx.* class;
解决方法:将所有java文件中的Androidx.* class删掉之后就解决了问题。 - Xml文件的图标问题:删除Androidx.* class后,xml文件在显示时,图片的引入会出现如下问题(图标引入失败):
解决方法:将srcCompat改成android:src
- 按钮的点击属性:
属性设置:设置按钮的clickable属性才能实现点击
android:clickable="false"
项目总结✔
- 第一次做移动开发的项目,项目规模不大,但是通过本次项目的练习,对AS的使用熟悉了不少;
- 我们分了两节课完成这个小Demo,第一节课完成界面的基本UI设计,这一阶段基本使用的是拖拽+属性设置完成,没有什么逻辑上的难点,值得注意的是,在设计UI时,要注意把一个大的界面分成多个小的组件,再在整个界面中利用FrameLayout引用每个小的部分;
- 在后台开发过程中,有一个Androidx的问题,需要在今后的开发过程引起注意!📝