Android开发-UI界面--类微信页面设计

这篇具有很好参考价值的文章主要介绍了Android开发-UI界面--类微信页面设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Android开发-UI界面–类微信页面设计

一、功能说明

设计一个类似微信的主页面框架,UI布局为上中下结构,包含了四个tag页面

二、开发技术

​ 本次用到了layout.xml、控件、监听、fragment


layout(布局)

定义了用户界面的可视化结构,主要有4种布局:

  • ConstrainLayout(约束布局):一个使用“相对定位”灵活地确定微件的位置和大小的一个布局

  • LinearLayout (线性布局):按照水平或垂直的顺序将子元素(可以是控件或布局)依次按照顺序排列,每一个元素都位于前面一个元素之后。分为两种:水平方向和垂直方向的布局

  • FrameLayout (帧布局):Fragment是Android3.0后引入的一个新的API,他出现的初衷是为了适应大屏幕的平板电脑,普通手机开发也会加入这个Fragment, 可以把他看成一个小型的Activity,又称Activity片段。使用Fragment 可以把屏幕划分成几块,然后进行分组,进行一个模块化的管理,从而可以更加方便的在运行过程中动态地更新Activity的用户界面。注:另外Fragment并不能单独使用,他需要嵌套在Activity 中使用,尽管他拥有自己的生命周期,但是还是会受到宿主Activity的生命周期的影响,比如Activity 被destory销毁了,他也会跟着销毁!

    • (附fragment基本概述)
  • https://www.runoob.com/w3cnote/android-tutorial-fragment-base.html

  • TableLayout (表格布局):适用于多行多列的布局格式,每个 TableLayout 是由多个 TableRow 组成,一个 TableRow 就表示 TableLayout 中的每一行,这一行可以由多个子元素组成 。实际上 TableLayout 和 TableRow 都是 LineLayout 线性布局的子类


控件

这次设计类微信界面,所以主要用到的控件是TextviewImageViewinclude

  • Textview:继承于View,在View的基础上加了文本
  • ImageView:继承于View,在View的基础上加了图像
  • include:重用布局文件

监听

监听分为五类:直接用匿名内部类、使用内部类、使用外部类、直接使用Activity作为事件监听器、直接绑定到标签。注:本项目里使用直接使用Activity作为事件监听器。

Android开发-UI界面--类微信页面设计

  • (附基于监听的事件处理机制)

    https://www.runoob.com/w3cnote/android-tutorial-listen-event-handle.html

三、设计流程与核心代码详解

1.创建项目
  • 创建一个空项目

Android开发-UI界面--类微信页面设计


2.资源文件导入
  • 将图片文件放在项目res/drawable文件夹下

Android开发-UI界面--类微信页面设计


3、布局设计

​ 创建top.xml、bottom.xml、frangment1(2、3、4).xml、main.xml文件

Android开发-UI界面--类微信页面设计


  • 标题栏(top.xml)

    • 采用ConstrainLayout约束布局 并设置背景颜色background
    • 使用TextView控件,并设置属性
      • gravity–居中(cnter),textColor,textSize
    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout 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:background="#F3EEC5" >
    
        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="微信"
            android:textColor="#B87614"
            android:textSize="35sp"
            android:textStyle="normal"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    </androidx.constraintlayout.widget.ConstraintLayout>
    
    • 效果图

Android开发-UI界面--类微信页面设计

---
  • 中间内容页面(fragment1.xml 注:fragment2、3、4与1类似就不赘述了)

    • fragment1、2、3、4分别对应微信、通讯录、发现、我的页面,后期将通过监听bottom底部区域显示对应的显示内容

    • 采用FragmentLayout帧布局

    • 一个TextView控件

      <?xml version="1.0" encoding="utf-8"?>
      <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          tools:context=".fragment1">
      
          <TextView
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:layout_gravity="center"
              android:gravity="center"
              android:textSize="35sp"
              android:text="这是微信界面~" />
      
      </FrameLayout>
      
      
      
    • 效果图(分别是微信、通讯录、发现、我的 界面。此处只展示微信界面)

      Android开发-UI界面--类微信页面设计


  • 底部栏(bottom.xml)

    • 采用LinearLayout线性布局(horizontal)–嵌套

      • 结构图(注意:嵌套的时候可以看结构树的层次)

        Android开发-UI界面--类微信页面设计

      • 使用 LinearLayout布局(vertical)将imageView–TextView包裹起来

        下面展示linearlayout1源码,后面几个类似

        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            android:id="@+id/LinearLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
        
            <LinearLayout
                android:id="@+id/linearlayout1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:orientation="vertical">
        
                <ImageView
                    android:id="@+id/imageView1"
                    android:layout_width="wrap_content"
                    android:layout_height="75dp"
                    android:layout_weight="1"
                    app:srcCompat="@drawable/weixin" />
        
                <TextView
                    android:id="@+id/tv1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:text="微信"
                    android:textColor="#C65906"
                    android:textSize="18sp" />
        
            </LinearLayout>
        </LinearLayout 
        
        • 效果图–注:蓝色框为一个LinearLayout包含imageview、TextView

        Android开发-UI界面--类微信页面设计


  • 整合(activity_main.xml)

    • 采用LinearLayout线性布局(vertical)–嵌套

      • 结构图

      Android开发-UI界面--类微信页面设计

      • 采用include控件重用布局文件(top、bottom)

      • content为Fragment布局

        <?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">
        
            <include
                layout="@layout/top"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"/>
        
            <FrameLayout
                android:id="@+id/content"
                android:layout_width="415dp"
                android:layout_height="wrap_content"
                android:layout_weight="1" />
        
            <include
                layout="@layout/bottom"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"/>
        
        </LinearLayout>
        
    • 效果图(小熊维尼版图标违规,换了一个内容一样图标不一样的项目展示)
      Android开发-UI界面--类微信页面设计


4.java程序设计–编写控制代码逻辑的java文件
  • 新建变量,使变量与设计好的组件一一对应

    • fragment1、2、3、4对应fragment1(2、3、4).xml文件

    • transaction–事务

    • linearLayout1、2、3、4对应bottom文件中的linearlayout1、2、3、4

Android开发-UI界面--类微信页面设计

  • 对LinearLayout赋值

    Android开发-UI界面--类微信页面设计


  • 创建FragmentManager管理fragment,并向main.xml文件中的fragmentlayout加入fragment1、2、3、4

Android开发-UI界面--类微信页面设计

---
  • 编写inital()函数–给fragment页面初始化

     public void inital(){
            //transaction的有效范围到commit
            transaction=manager.beginTransaction()
                    .add(R.id.content,fragment1)
                    .add(R.id.content,fragment2)
                    .add(R.id.content,fragment3)
                    .add(R.id.content,fragment4)
                    .commit();
        }
    

  • 编写fragmentHide()函数–隐藏fragment页面,防止堆叠

     public void fragmentHide(){
            transaction=manager.beginTransaction()
                    .hide(fragment1)
                    .hide(fragment2)
                    .hide(fragment3)
                    .hide(fragment4)
                    .commit();
        }
    

  • 编写showfragment()函数–展示fragment页面

     private void showfragment(Fragment fragment){
            transaction=manager.beginTransaction()
                    .show(fragment)
                    .commit();
        }
    

  • 对bottom.xml文件中的四个LinearLayout进行监听

    • 使用-直接使用Activity作为事件监听器。

Android开发-UI界面--类微信页面设计

  • 	linearLayout1.setOnClickListener(this);
        linearLayout2.setOnClickListener(this);
        linearLayout3.setOnClickListener(this);
        linearLayout4.setOnClickListener(this);
    
  • 编写onClick()函数–对不同LinearLayout监听做出不同反应

    • 使用Switch语句实现

    •  public void onClick(View view) {
              fragmentHide();
              switch (view.getId())
              {
                  case R.id.linearlayout1: showfragment(fragment1);
                      break;
                  case R.id.linearlayout2: showfragment(fragment2);
                      break;
                  case R.id.linearlayout3: showfragment(fragment3);
                      break;
                  case R.id.linearlayout4: showfragment(fragment4);
                      break;
      
              }
          }
      

  • 小结

    (1) 先通过fragmentHide()对fragment页面进行隐藏

    (2) 在程序开始时调用showfragment()显示fragment1作为默认显示

    (3) 对四个LinearLayout进行监听,点击哪一个LinearLayout就通过onClick()显示对应内容


  • MainActivity.java文件

    package com.example.experiment;
    
    import androidx.appcompat.app.AppCompatActivity;
    import androidx.fragment.app.Fragment;
    import androidx.fragment.app.FragmentManager;
    
    import android.os.Bundle;
    import android.view.View;
    import android.widget.LinearLayout;
    import android.widget.TextView;
    
    public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    
        TextView textView;
        Fragment fragment1,fragment2,fragment3,fragment4;
        FragmentManager manager;
        int transaction;
    
        LinearLayout linearLayout1,linearLayout2,linearLayout3,linearLayout4;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
    
            linearLayout1=findViewById(R.id.linearlayout1);
            linearLayout2=findViewById(R.id.linearlayout2);
            linearLayout3=findViewById(R.id.linearlayout3);
            linearLayout4=findViewById(R.id.linearlayout4);
    
            manager=getSupportFragmentManager();
            fragment1=new fragment1();
            fragment2=new fragment2();
            fragment3=new fragment3();
            fragment4=new fragment4();
    
            inital();//初始化
            fragmentHide();//隐藏fragment 防止堆叠
            showfragment(fragment1);
    
            linearLayout1.setOnClickListener(this);
            linearLayout2.setOnClickListener(this);
            linearLayout3.setOnClickListener(this);
            linearLayout4.setOnClickListener(this);
    
        }
    
        public void onClick(View view) {
            fragmentHide();
            switch (view.getId())
            {
                case R.id.linearlayout1: showfragment(fragment1);
                    break;
                case R.id.linearlayout2: showfragment(fragment2);
                    break;
                case R.id.linearlayout3: showfragment(fragment3);
                    break;
                case R.id.linearlayout4: showfragment(fragment4);
                    break;
    
            }
        }
    
        private void showfragment(Fragment fragment){
            transaction=manager.beginTransaction()
                    .show(fragment)
                    .commit();
        }
    
        public void inital(){
            //transaction的有效范围到commit
            transaction=manager.beginTransaction()
                    .add(R.id.content,fragment1)
                    .add(R.id.content,fragment2)
                    .add(R.id.content,fragment3)
                    .add(R.id.content,fragment4)
                    .commit();
        }
    
        public void fragmentHide(){
            transaction=manager.beginTransaction()
                    .hide(fragment1)
                    .hide(fragment2)
                    .hide(fragment3)
                    .hide(fragment4)
                    .commit();
        }
    }
    

四、结果演示

Android开发-UI界面--类微信页面设计
Android开发-UI界面--类微信页面设计
Android开发-UI界面--类微信页面设计
Android开发-UI界面--类微信页面设计


  • 总结:本月的安卓学习中主要围绕UI界面,设计了一个类微信界面,图标满满少女心(简直爱惨了),大致了解了几种布局、控件的属性设置、对应的java文件编写。在设计的时候一点点调属性真的很好玩,到java文件的编写的时候就需要理一理逻辑了,对可以封装的函数可以进行封装(这是一个好习惯),小小的期待一下后面的实验,希望不要难倒我。(很好在用git上传源码的时候难倒了我,怪菜)

  • 源码开源地址

    https://gitcode.net/m0_51593540/android-experiment/-/tree/master/文章来源地址https://www.toymoban.com/news/detail-497463.html

到了这里,关于Android开发-UI界面--类微信页面设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HarmonyOS ArkTS TabContent组件实现类微信(可滑动的)tabBar页签切换页面功能

    :harmonyOS   鸿蒙开发  ArkTS  TabContent 使用场景:类微信底部导航栏,点击/左右滑动切换页面并加载数据 开发环境:ArkTS3.1  API9  Phone设备 HMOS Dev官方文档:文档中心 演示效果: 目录 完整Demo已提交至Gitee 搭建页面 自定义TabContent(往后翻有完整代码) 思路 开始 完

    2024年02月05日
    浏览(55)
  • Android Studio搭建简单类微信小程序首页框架

    目录 1、页面布局 2、代码具体实现 3、界面展示 第一步:创建top.xml和bottom.xml.文件,用于设计界面顶部与底部按键。再修改activity_main.xml文件,将前面两个文件效果加入。最后设计四个功能界面。 1、 top.xml 用于首页标题显示 bottom.xml 四个linearlayout(线性布局)中均包含一个

    2024年02月09日
    浏览(45)
  • Android UI 开发·界面布局开发·案例分析

    目录 ​编辑 1.  线性布局(LinearLayout) 2.  相对布局(RelativeLayout) 3.  表格布局(TableLayout) 4.  帧布局(FrameLayout) 5.  网格布局(GridLayout) 6.  绝对布局(AbsoluteLayout) 补充内容:关于selector状态选择器         LinearLayout线性布局是一种最简单的布局方式,它有垂

    2024年02月03日
    浏览(40)
  • 安卓开发——微信UI界面

    一、功能说明 本次作业开发的是类似微信的主页面框架,UI布局为上中下结构,用户可通过点击底部导航栏切换板块内容,其中共包含四个板块,分别是“微信”、“通讯录”、“发现”和“我的”。 二、设计流程 2.1 页面设计 微信的界面布局分为上中下三个部分。 (1)第

    2024年02月05日
    浏览(39)
  • Android studio - UI 界面设计(仿问卷星登陆注册界面)

    1 先上效果图: 2 准备工作 建如下活动文件以及素材文件 3 代码实现 3.1 修改themes.xml、 themes.xml(night)文件 使自定义按钮组件起效果 代码实现 btn_login.xml button_lg.xml button_res.xml 3.2 实现布局 3.2.1 登陆界面 activity_login.xml 3.2.2 注册界面 activity_register.xml 4 按钮实现页面跳转 4.1 Logi

    2024年02月11日
    浏览(59)
  • Android Studio Kotlin 简单实现微信主界面UI

                            windows11                         文件版本 2023.2.0.0                         产品版本 2023.2.0.AI-232.10227.8.2321._BUILD_NUMBER_         JAVA属性:                          java version \\\"17.0.10\\\" 2024-01-16 LTS       

    2024年04月16日
    浏览(61)
  • android stdio中简单的ui页面设计

    首先创建一个APP项目 在layout文件夹下找到activity main.xml 到以下界面可以添加界面的各种符号: 账号输入框,密码输入框按钮和其他按键 可添加辅助线对页面设置布局页面布局不同的尺寸,分辨率可以使设备的兼容度更好 可以用imageView添加图标    页面展示图如下:

    2024年02月05日
    浏览(45)
  • 蓝牙聊天App设计1:Android Studio制作蓝牙聊天通讯软件(UI界面设计)

    前言:蓝牙聊天App设计全部有三篇文章(一、UI界面设计,二、蓝牙搜索配对连接实现,三、蓝牙连接聊天),这篇文章是一、UI界面设计 课程1:Android Studio小白安装教程,以及第一个Android项目案例“Hello World”的调试运行 课程2:蓝牙聊天App设计1:Android Studio制作蓝牙聊天通

    2024年02月02日
    浏览(55)
  • android studio——设计简单微信界面超详细教程

    一、作业目标 本次作业开发的是微信APP的门户框架,UI布局为上中下结构。 功能一:用户可通过点击底部导航栏切换四个板块进行切换,它们分别是“聊天”、“联系人”、“功能”、“我的”,每切换一个界面会有对应的文本提示。 功能二:在每一tab页面实现列表效果。

    2024年02月04日
    浏览(68)
  • CloudCompare二次开发之如何设计界面ui与功能实现?

      CloudCompare源代码编译成功后,即可进行二次开发,可以通过修改源码实现二次开发,二次开发基础功能见(CloudCompare如何进行二次开发?),若想要实现更多自定义功能,可以自定义界面ui,并操作CloudCompare程序处理数据。本文讲解界面ui设计,修改相应的文件,使Cloud

    2023年04月20日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包