当前位置:   article > 正文

UI界面开发- android studio搭建类微信界面_android开发聊天界面xml

android开发聊天界面xml

目录

1.实验目的

2.开发过程

一、界面框架设计思路

Ⅰ:顶部标题区域top.xml

Ⅰ:底部功能选择区域botten.xml

Ⅲ:中间显示区域

 ①:创建不同的Fragment.java及layout

②:activity_main.xml整体框架搭建​编辑

③:实现Fragment的隐藏和显示

        1.在主函数中定义控件

        2.定义隐藏显示fragment函数 

        3.对控件进行监听

        4.对细节进行调整 

        5.整体思路

 3.运行截图 

4.代码地址


1.实验目的

  请开发一个类似微信的主页面框架,UI布局为上中下结构,包含4个tab页面;开发技术为:layout xml、控件、监听,fragment。

2.开发过程

一、界面框架设计思路

界面分为三部分

①:是顶部标题

②:是底部功能选择区域

③:是中间显示区域

Ⅰ:顶部标题区域top.xml

新建一个layout,起名top.xml

    该部分的实现方法为:最外层使用一个水平的linearlayout布局,然后使用一个textview即可

并确定好背景色字体大小等属性。

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="50dp"
  5. android:gravity="center"
  6. android:background="@color/black"
  7. android:orientation="vertical"
  8. >
  9. <TextView
  10. android:id="@+id/textView0"
  11. android:layout_width="wrap_content"
  12. android:layout_height="40dp"
  13. android:layout_gravity="center"
  14. android:layout_weight="1"
  15. android:textSize="40sp"
  16. android:textColor="@color/white"
  17. android:text="微信" />
  18. </LinearLayout>

效果


 

Ⅰ:底部功能选择区域botten.xml

  该部分的设计思路如下:在该部分中一共有四个图片以及四个文本,每一个文本和一个图片组成一个垂直方向的元素,四个元素又组成一个水平方向的大框架。因此对于此部分,最外层采用水平的linearlayout的布局,在水平布局下又放四个垂直方向的linearlayout的布局,在每个垂直布局下又放上一个imageview和一个textview(imageview放在textview上层)即可。
 

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:app="http://schemas.android.com/apk/res-auto"
  4. android:layout_width="match_parent"
  5. android:layout_height="80dp"
  6. >
  7. <LinearLayout
  8. android:id="@+id/lot1"
  9. android:layout_width="wrap_content"
  10. android:layout_height="match_parent"
  11. android:layout_weight="1"
  12. android:gravity="center"
  13. android:orientation="vertical"
  14. >
  15. <ImageView
  16. android:id="@+id/imageView1"
  17. android:layout_width="match_parent"
  18. android:layout_height="wrap_content"
  19. app:srcCompat="?attr/actionModeCopyDrawable" />
  20. <TextView
  21. android:id="@+id/textView1"
  22. android:layout_width="match_parent"
  23. android:layout_height="wrap_content"
  24. android:gravity="center"
  25. android:text="聊天"
  26. />
  27. </LinearLayout>
  28. <LinearLayout
  29. android:id="@+id/lout2"
  30. android:layout_width="wrap_content"
  31. android:layout_height="match_parent"
  32. android:layout_weight="1"
  33. android:gravity="center"
  34. android:orientation="vertical">
  35. <ImageView
  36. android:id="@+id/imageView2"
  37. android:layout_width="match_parent"
  38. android:layout_height="wrap_content"
  39. app:srcCompat="?attr/actionModeCopyDrawable" />
  40. <TextView
  41. android:id="@+id/textView2"
  42. android:layout_width="match_parent"
  43. android:layout_height="wrap_content"
  44. android:gravity="center"
  45. android:text="联系人" />
  46. </LinearLayout>
  47. <LinearLayout
  48. android:id="@+id/lout3"
  49. android:layout_width="wrap_content"
  50. android:layout_height="match_parent"
  51. android:layout_weight="1"
  52. android:gravity="center"
  53. android:orientation="vertical">
  54. <ImageView
  55. android:id="@+id/imageView3"
  56. android:layout_width="match_parent"
  57. android:layout_height="wrap_content"
  58. app:srcCompat="?attr/actionModeCopyDrawable" />
  59. <TextView
  60. android:id="@+id/textView3"
  61. android:layout_width="match_parent"
  62. android:layout_height="wrap_content"
  63. android:gravity="center"
  64. android:text="朋友圈" />
  65. </LinearLayout>
  66. <LinearLayout
  67. android:id="@+id/lout4"
  68. android:layout_width="wrap_content"
  69. android:layout_height="match_parent"
  70. android:layout_weight="1"
  71. android:gravity="center"
  72. android:orientation="vertical">
  73. <ImageView
  74. android:id="@+id/imageView4"
  75. android:layout_width="match_parent"
  76. android:layout_height="wrap_content"
  77. app:srcCompat="?attr/actionModeCopyDrawable" />
  78. <TextView
  79. android:id="@+id/textView4"
  80. android:layout_width="match_parent"
  81. android:layout_height="wrap_content"
  82. android:gravity="center"
  83. android:text="设置" />
  84. </LinearLayout>
  85. </LinearLayout>

 效果

 

Ⅲ:中间显示区域

 ①:创建对应的四个Fragment.xml文件

  chat_fragment.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent">
  5. <TextView
  6. android:id="@+id/textView5"
  7. android:layout_width="match_parent"
  8. android:layout_height="match_parent"
  9. android:layout_weight="1"
  10. android:text="这是聊天页面"
  11. android:gravity="center"
  12. android:layout_gravity="center"
  13. android:textSize="30sp"
  14. />
  15. </LinearLayout>

 

  1. package com.example.wechat;
  2. import android.os.Bundle;
  3. import androidx.fragment.app.Fragment;
  4. import android.view.LayoutInflater;
  5. import android.view.View;
  6. import android.view.ViewGroup;
  7. public class chatFragment extends Fragment {
  8. public chatFragment() {
  9. // Required empty public constructor
  10. }
  11. @Override
  12. public View onCreateView(LayoutInflater inflater, ViewGroup container,
  13. Bundle savedInstanceState) {
  14. // Inflate the layout for this fragment
  15. return inflater.inflate(R.layout.chat_fragment, container, false);
  16. }
  17. }

同样的模式编写另外三个.xml

②:activity_main.xml整体框架搭建

    整体框架就是将top,bottem以及中间的主内容进行拼接,那么最外层就需要使用一个垂直方向的lineaarlayout,然后将top和bottom部分liclude进来(top在上,bottom在下,中间放主内容),同时中间的主内容使用framelayout,以便进行接下来的交互设计。
 

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:app="http://schemas.android.com/apk/res-auto"
  4. xmlns:tools="http://schemas.android.com/tools"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent"
  7. tools:context=".MainActivity">
  8. <LinearLayout
  9. android:layout_width="match_parent"
  10. android:layout_height="match_parent"
  11. android:orientation="vertical">
  12. <include layout="@layout/top"/>
  13. <FrameLayout
  14. android:id="@+id/content"
  15. android:layout_width="match_parent"
  16. android:layout_height="0dp"
  17. android:layout_weight="1"
  18. >
  19. </FrameLayout>
  20. <include layout="@layout/botten"/>
  21. </LinearLayout>
  22. </androidx.constraintlayout.widget.ConstraintLayout>

③:实现Fragment的隐藏和显示

  我们需要将四个Fragment隐藏起来,只有在点击相应的导航时才会出现相应的Frgment,而另外三个将会继续隐藏起来,那么实现方法如下:  

1.在主函数中定义控件

  1. private Fragment setragment=new setragment();
  2. private Fragment chatFragment=new chatFragment();
  3. private Fragment discoverFragment = new discoverFragment();
  4. private Fragment linmanFragment =new linmanFragment();
  5. private FragmentManager fragmentManager;
  6. private LinearLayout LinearLayout1,LinearLayout2,LinearLayout3,LinearLayout4;
  7. private TextView textView;

2.定义隐藏显示fragment函数

  1. private void showfragment(int i){
  2. androidx.fragment.app.FragmentTransaction transaction = fragmentManager.beginTransaction();
  3. hideFragment(transaction);
  4. switch (i) {
  5. case 0:
  6. transaction.show(chatFragment);
  7. LinearLayout1.setBackgroundColor(Color.BLACK);
  8. break;
  9. case 1:
  10. transaction.show(linmanFragment);
  11. break;
  12. case 2:
  13. transaction.show(discoverFragment);
  14. break;
  15. case 3:
  16. transaction.show(setragment);
  17. break;
  18. default:
  19. break;
  20. }
  21. transaction.commit();
  22. }
  1. private void hideFragment(androidx.fragment.app.FragmentTransaction transaction) {
  2. transaction.hide(setragment);
  3. transaction.hide(chatFragment);
  4. transaction.hide(discoverFragment);
  5. transaction.hide(linmanFragment);
  6. }

3.对控件进行监听

  1. @Override
  2. protected void onCreate(Bundle savedInstanceState) {
  3. super.onCreate(savedInstanceState);
  4. setContentView(R.layout.activity_main);
  5. LinearLayout1 = findViewById(R.id.lot1);
  6. LinearLayout2=findViewById(R.id.lout2);
  7. LinearLayout3=findViewById(R.id.lout3);
  8. LinearLayout4=findViewById(R.id.lout4);
  9. textView=findViewById(R.id.textView0);
  10. LinearLayout1.setOnClickListener((View.OnClickListener) this);
  11. LinearLayout2.setOnClickListener((View.OnClickListener) this);
  12. LinearLayout3.setOnClickListener((View.OnClickListener) this);
  13. LinearLayout4.setOnClickListener((View.OnClickListener) this);
  14. initFragment();
  15. }
  16. @Override
  17. public void onClick(View v){
  18. switch (v.getId()){
  19. case R.id.lot1:
  20. showfragment(0);
  21. showcolor(0);
  22. break;
  23. case R.id.lout2:
  24. showfragment(1);
  25. showcolor(1);
  26. break;
  27. case R.id.lout3:t:
  28. showfragment(2);
  29. showcolor(2);
  30. break;
  31. case R.id.lout4:
  32. showfragment(3);
  33. showcolor(3);
  34. break;
  35. default:
  36. break;
  37. }
  38. }

4.对细节进行调整

  1. private void showcolor(int i) {
  2. LinearLayout1.setBackgroundColor(Color.WHITE);
  3. LinearLayout2.setBackgroundColor(Color.WHITE);
  4. LinearLayout3.setBackgroundColor(Color.WHITE);
  5. LinearLayout4.setBackgroundColor(Color.WHITE);
  6. switch (i) {
  7. case 0:
  8. LinearLayout1.setBackgroundColor(Color.GREEN);
  9. textView.setText("微信");
  10. break;
  11. case 1:
  12. LinearLayout2.setBackgroundColor(Color.GREEN);
  13. textView.setText("通讯录");
  14. break;
  15. case 2:
  16. LinearLayout3.setBackgroundColor(Color.GREEN);
  17. textView.setText("朋友圈");
  18. break;
  19. case 3:
  20. LinearLayout4.setBackgroundColor(Color.GREEN);
  21. textView.setText("设置");
  22. break;
  23. default:
  24. break;
  25. }
  26. }

5.整体思路

通过监听用户点击来实现页面变化

主要过程是onClick()函数判断点击位置,showfragment()改变成对应页面

3.运行截图

 

 4.代码地址

https://gitee.com/Jasonnoon/weichat11.giticon-default.png?t=N176https://gitee.com/Jasonnoon/weichat11.git

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/676317
推荐阅读
相关标签
  

闽ICP备14008679号