as微信界面设计

一、内容

实操实现APP门户界面框架设计,至少包含4个tab页,能实现tab页之间的点击切换

二、技术

使用布局(layouts)和分段(fragment),对控件进行点击监听

 三、xml代码

top.xml

<?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="55dp"android:background="@color/black"><TextViewandroid:id="@+id/textView5"android:layout_width="wrap_content"android:layout_height="55dp"android:layout_weight="1"android:gravity="center"android:text="应用"android:textColor="@color/white"android:textSize="30sp" />
</LinearLayout>

  界面居中上方写标题,背景是黑色,字体是白色

 bottom.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="100dp"android:background="@color/black"><LinearLayoutandroid:id="@+id/linearLayout1"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:gravity="center"android:orientation="vertical"><ImageViewandroid:id="@+id/imageView2"android:layout_width="30dp"android:layout_height="30dp"android:src="@drawable/p1"/><TextViewandroid:id="@+id/textView2"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:text="微信"android:textColor="@color/white"android:textSize="24sp" /></LinearLayout><LinearLayoutandroid:id="@+id/linearLayout2"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:gravity="center"android:orientation="vertical"><ImageViewandroid:id="@+id/imageView3"android:layout_width="30dp"android:layout_height="30dp"android:src="@drawable/p2" /><TextViewandroid:id="@+id/textView3"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:text="通讯录"android:textColor="@color/white"android:textSize="24sp" /></LinearLayout><LinearLayoutandroid:id="@+id/linearLayout3"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:gravity="center"android:orientation="vertical"><ImageViewandroid:id="@+id/imageView4"android:layout_width="30dp"android:layout_height="30dp"android:src="@drawable/p3" /><TextViewandroid:id="@+id/textView4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:gravity="center"android:text="发现"android:textColor="@color/white"android:textSize="24sp" /></LinearLayout><LinearLayoutandroid:id="@+id/linearLayout4"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:gravity="center"android:orientation="vertical"><ImageViewandroid:id="@+id/imageView"android:layout_width="30dp"android:layout_height="30dp"android:src="@drawable/p4" /><TextViewandroid:id="@+id/textView"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:text="我"android:textColor="@color/white"android:textSize="24sp" /></LinearLayout>
</LinearLayout>
界面下方分成四个模板,由图片和文字组成,正在使用的界面图标为绿色,不在使用的界面图标为黑色

 

 fragment_config.xml/fragment_wechat/fragment_friend/fragment_contact

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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=".Fragment_config"><!-- TODO: Update blank fragment layout --><TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:text="这是微信聊天界面"android:textSize="35sp" /></LinearLayout>

 显示界面中间内容

 

 

activity_main.xml 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><includelayout="@layout/top"android:layout_width="match_parent"android:layout_height="wrap_content" /><FrameLayoutandroid:id="@+id/id_content"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"></FrameLayout><includelayout="@layout/bottom"android:gravity="bottom" /></LinearLayout>

 将top.xml和bottom.xml放在一个界面中

 

四、Java代码 

 MainActivity.java

package com.example.cyxapp;import androidx.appcompat.app.AppCompatActivity;import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;public class MainActivity extends AppCompatActivity implements View.OnClickListener{private Fragment Fragment_config=new Fragment_config();private Fragment Fragment_contact=new Fragment_contact();private Fragment Fragment_wechat=new Fragment_wechat();private Fragment Fragment_friend=new Fragment_friend();private FragmentManager fragmentManager;private LinearLayout linearLayout1,linearLayout2,linearLayout3,linearLayout4;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);linearLayout1=findViewById(R.id.linearLayout1);linearLayout2=findViewById(R.id.linearLayout2);linearLayout3=findViewById(R.id.linearLayout3);linearLayout4=findViewById(R.id.linearLayout4);linearLayout1.setOnClickListener(this);linearLayout2.setOnClickListener(this);linearLayout3.setOnClickListener(this);linearLayout4.setOnClickListener(this);initFragment();}private void initFragment(){fragmentManager=getFragmentManager();FragmentTransaction transaction=fragmentManager.beginTransaction();transaction.add(R.id.id_content,Fragment_wechat);transaction.add(R.id.id_content,Fragment_contact);transaction.add(R.id.id_content,Fragment_config);transaction.add(R.id.id_content,Fragment_friend);transaction.commit();}private void hideFragment(FragmentTransaction transaction){transaction.hide(Fragment_wechat);transaction.hide(Fragment_contact);transaction.hide(Fragment_config);transaction.hide(Fragment_friend);}private void background(View v) {switch (v.getId()) {case R.id.linearLayout1:linearLayout1.setBackgroundColor(Color.parseColor("#426F42"));break;case R.id.linearLayout2:linearLayout2.setBackgroundColor(Color.parseColor("#426F42"));break;case R.id.linearLayout3:linearLayout3.setBackgroundColor(Color.parseColor("#426F42"));break;case R.id.linearLayout4:linearLayout4.setBackgroundColor(Color.parseColor("#426F42"));break;default:break;}}private void backgroundreturn(View v) {switch (v.getId()) {case R.id.linearLayout1:linearLayout1.setBackgroundColor(Color.parseColor("#000000"));break;case R.id.linearLayout2:linearLayout2.setBackgroundColor(Color.parseColor("#000000"));break;case R.id.linearLayout3:linearLayout3.setBackgroundColor(Color.parseColor("#000000"));break;case R.id.linearLayout4:linearLayout4.setBackgroundColor(Color.parseColor("#000000"));break;default:break;}}private void showfragmnet(int i) {FragmentTransaction transaction=fragmentManager.beginTransaction();hideFragment(transaction);switch (i){case 0:transaction.show(Fragment_wechat);background(linearLayout1);backgroundreturn(linearLayout3);backgroundreturn(linearLayout2);backgroundreturn(linearLayout4);break;case 1:transaction.show(Fragment_friend);background(linearLayout2);backgroundreturn(linearLayout4);backgroundreturn(linearLayout1);backgroundreturn(linearLayout3);break;case 2:transaction.show(Fragment_contact);background(linearLayout3);backgroundreturn(linearLayout4);backgroundreturn(linearLayout2);backgroundreturn(linearLayout1);break;case 3:transaction.show(Fragment_config);background(linearLayout4);backgroundreturn(linearLayout1);backgroundreturn(linearLayout2);backgroundreturn(linearLayout3);break;default:break;}transaction.commit();}@Overridepublic void onClick(View v) {switch (v.getId()){case R.id.linearLayout1:showfragmnet(0);break;case R.id.linearLayout2:showfragmnet(1);break;case R.id.linearLayout3:showfragmnet(2);break;case R.id.linearLayout4:showfragmnet(3);break;default:break;}}}

 initFragment函数中利用transaction来实现fragment的切换

hideFragment把没有使用的界面的fragment的内容隐藏起来

background使图标点击后变绿色

backgroundreturn让图标恢复黑色

showfragmnet显示正在使用界面的fragment的内容

 onClick监听函数,监听到底是哪一个图标被击中从而显示哪一个界面的内容

 Fragment_config.java

package com.example.cyxapp;import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;public class Fragment_config extends Fragment {public Fragment_config() {// Required empty public constructor}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// Inflate the layout for this fragmentreturn inflater.inflate(R.layout.fragment_config, container, false);}
}
Fragment_contact、Fragment_friend、Fragment_wechat类似

五、界面展示

 

 

 代码仓库地址:cccyuxuan/cyxApp1 (github.com)

 

 

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/22237.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

将iconfont图标引入到vant的Tabbar标签栏里边

vant的Tabbar标签栏https://youzan.github.io/vant/#/zh-CN/tabbar 在app开发中&#xff0c;这个必不可少&#xff0c;上一张讲了怎么引入iconfont图标&#xff0c;现在就将iconfont图标引入到tabbar标签栏里边&#xff0c;看着vant提供的图标&#xff0c;必将有点丑啊23333&am…

微信小程序自定义tabBar以及图标-使用vant-weapp

小程序整合vant weapp可以看《微信小程序vant weapp安装与使用》 微信官方文档有介绍自定义tabBar 1、在小程序根目录下创建custom-tab-bar文件夹&#xff0c;并创建以下文件。&#xff08;这个是作为入口文件的&#xff09; custom-tab-bar/index.js custom-tab-bar/index.…

WeTab新标签页:浏览器主页就可以直接使用的Chat GPT

我一直觉得&#xff0c;如果能在打开浏览器的时候就能使用chatgpt&#xff0c;那可以说是再方便不过了。 刚好前段时间我发现我正在使用的WeTab新标签页刚好有了这个新功能&#xff0c;可以在新标签页上直接用gpt。 因为一些原因&#xff0c;很多人都被注册chatGPT的繁琐步骤劝…

Chat GPT使用体验,现在不会还有人没用过GPT吧?

“ChatGPT 好得吓人&#xff0c;我们离强大到危险的人工智能不远了”。 这是我们最近听到不少的一些声音&#xff0c;甚至有许多美丽国的大佬&#xff0c;联名要求停止gpt5的开发。 然而&#xff0c;尽管 ChatGPT 确实是一种相当出色的模型&#xff0c;但它也有其限制和局限性…

用后即弃的人造人

即使各种鼓励政策不断被使出&#xff0c;很多发达国家的女性&#xff0c;也不大愿意生孩子了。少子化是现代化、工业化的附赠品&#xff0c;这一点无可回避。 所以很多人都很期待用科技来造人。埃隆马斯克&#xff08;Elon Musk&#xff09;等人提出的“人造子宫”方案&#xf…

Android程序员惨遭社会毒打,如何快准狠的应对下次危机?

一、程序员现状 今年年初&#xff0c;我同行朋友的小公司辞退了10多个程序员。 近3个月过去了&#xff0c;大概一半的人找不到合适工作。大家聊起时正在感慨这两年好多行业都不景气&#xff0c;朋友说&#xff0c;他的前同事们不少非科班出身&#xff0c;半路参加培训机构后就…

波士顿动力新年炸场!人形机器人飞身转投工具包,最后体操式落地把人类给整不会了...

杨净 丰色 发自 凹非寺量子位 | 公众号 QbitAI 波士顿动力Atlas&#xff0c;又来整活炸场了&#xff01; 不是跑酷不是跳舞&#xff0c;而是去工地老实上班当助手&#xff0c;结果把人类给整不会了。 当高架上工人需要工具包&#xff0c;Atlas二话不说完成搭桥、爬楼等一系列动…

“Google 之母”诞生 | 历史上的今天

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2023 年 7 月 5 日&#xff0c;在 1994 年的今天&#xff0c;在半导体大战中&#xff0c;英特尔宣布降价以阻止竞争对手&#xff1b;当天&#xff0c;英特尔公司宣布了其…

重磅!微软推出HuggingGPT:所有HuggingFace的模型都可以被ChatGPT随意调用!

编&#xff5c;桃子 Britta 源&#xff5c;新智元 「贾维斯」已来&#xff01;微软亚研院和浙大推出了一个大模型协作系统HuggingGPT&#xff0c;让ChatGPT协调HF社区模型&#xff0c;处理各种多模态任务能力超强。 ChatGPT引爆的AI热潮也「烧到了」金融圈。 近来&#xff0c;彭…

chatGPT联结hugging face了

文章目录 ChatGPT自己选模型&#xff01;浙大微软亚研院新论文&#xff0c;HuggingGPT项目开源HuggingGPT搭桥四步工作流程多模态能力&#xff0c;有了 ChatGPT自己选模型&#xff01;浙大微软亚研院新论文&#xff0c;HuggingGPT项目开源 原文链接&#xff1a;https://mbd.ba…

答题小程序团队多人pk答题赛功能详解

针对目前答题小程序的趣味性、参与性特此开发了答题小程序团队多人赛&#xff0c;具体介绍如下&#xff1a; 一、 邀请制团队多人赛 2V2模式&#xff1a;2V2模式顾名思义&#xff0c;即2个人对另外的2个人进行团队pk答题。操作流程为&#xff1a;进入团队赛邀请制&#xff0c;邀…

活动星投票技能创意大赛网络评选微信的投票方式线上免费投票

“技能创意大赛”网络评选投票_建立投票链接_作品投票小程序_扫码投票制作方法 现在来说&#xff0c;公司、企业、学校更多的想借助短视频推广自己。 通过微信投票小程序&#xff0c;网友们就可以通过手机拍视频上传视频参加活动&#xff0c;而短视频微信投票评选活动既可以给用…

【2018国赛线上比赛】知识问答题真题演练第一波

1、操作系统为了防止应用程序在不可执行区域中运行代码提供的解决方案是什么&#xff1f;( A ) A、数据执行保护 B、地址随机化保护 C、只读保护 D、访问违例异常 2、Stack Canary 的作用是什么&#xff1f;( A ) A、缓解栈越界写入 B、缓解栈越界读取 C、缓解堆越界写入 D、缓…

基于闻达(wenda+chatGLM-6B),构建自己的知识库小助手

目录 安装miniconda 拉取仓库 使用内置python 安装依赖 上传模型 克隆及下载 text2vec-large-chinese 修改配置 上传知识库&#xff08;txt文件&#xff09; 处理txt数据 启动服务 测试 ChatGLM-6B是清华团队智谱AI开发的&#xff0c;一个开源的、支持中英双语的对话…

用离散数学知识对AI最难替代的职业进行数学建模,推导证明出最难被AI替代的职业是什么

摘要&#xff1a; 本文基于离散数学的知识&#xff0c;对人类智力劳动的职业进行数学建模&#xff0c;并推导出最难被AI替代的职业。通过对职业的分析&#xff0c;本文认为&#xff0c;应该运用离散数学中的图论知识对AI替代各种人类职业的难易进行数学建模&#xff0c;从中寻找…

与2017年度两位图灵奖得主的虚拟对话

【新一届图灵奖即将揭晓&#xff0c;在此与大家分享撰写的2017年度两位图灵奖得主的故事。本文于2018年3月28日完稿&#xff0c;发表于《中国计算机学会通讯》2018年第4期。】 2017年度的计算机领域最高奖“图灵奖”终于揭晓——斯坦福大学的约翰●轩尼诗&#xff08;John Henn…

这把小刀怎么用——详解Knife4j框架

目录 介绍 使用步骤 1.在maven中添加依赖 2.添加其配置类&#xff0c;可以放在项目其他框架的配置类包中 3.application.properties中添加配置 介绍 Knife4j是为Java MVC框架集成Swagger生成在线Api文档的增强解决方案,其前身是swagger-bootstrap-ui&#xff0c;此框架还有调…

Emlog插件小刀娱乐网同款文章顶踩源码

介绍&#xff1a; Emlog小刀娱乐网同款顶踩插件免费发布 前些天看到小刀娱乐网的文章页面有了一些变化&#xff0c;那就是增加了一个有价值/无价值的顶踩按钮。 样式也是非常的好看 再加上两个表情包是非常的有趣。 网盘下载地址&#xff1a; http://kekewl.org/HGAmnmx7pAC0…

一把小刀,直插 class 文件的小心脏

大家好&#xff0c;我是二哥呀&#xff0c;假期结束了&#xff0c;学起来吧&#xff01; 今天我拿了一把小刀&#xff0c;准备解剖一下 Java 的 class 文件。 CS 的世界里流行着这么一句话&#xff0c;“计算机科学领域的任何问题都可以通过增加一个中间层来解决”。对于 Jav…