AS中类微信界面设计

用Android studio编写类微信应用之基本界面

要编写一个类似微信那样的应用,第一步是写出一个类似那样的界面,之后的各种功能都是在完成界面之后实现的。完成之后界面大致是这样的。完成之后的样图

XML文件的编写

要实现的功能是一个类似微信的界面,并且选择下方的不同功能可以在不同的界面之间切换,那么首先要实现的就是各个界面的XML文件。
我们首先对这个界面进行分析,容易看出这个界面可以大致分为三个部分,分别是上面的顶部文件,中间部分的文件和底部的文件。
顶部文件的编写
顶部是我们的界面名称,这个地方是MyWechat.
我们在res/layout中创建一个名为top的XML文件,之后在code界面向其中添加android:text="@string/app_name"
或是在Design界面中向框内拖动TextView选项,之后为了让该文字在框中居中显示,需要先将orientation设置为vertical,然后在Code界面添加语句
android:layout_gravity=“center_horizontal”
之后WeChat就会在页面的正中上方显示
在这里插入图片描述
之后为了将其设计成白色字体,在code中添加
android:textColor="#ffffff"
添加
android:background="#000000"
以将背景设为黑色效果如下图
在这里插入图片描述
至此,XML的上端部分就设计完成。
底端文件编写
底端文件的理想要设计为下图所示
在这里插入图片描述
我们可将此底端文件视作一个horizontal型的LinearLayout包含有四个vertical型的LinearLayout
,因此,设计的模式如图:
在这里插入图片描述

最外层的LinearLayout将其layout_height设置为100dp,具体多少可以设置之后在视图中查看实际效果,重点是第一个vertical型的LinearLayout的设置,这里有三个比较关键的参数,分别是
android:layout_width=“0dp”
android:gravity=“center”
android:layout_weight=“1”
这样的三个参数设置好之后,之后在添加后续的vertical型的LinearLayout时,会发现所有的vertical型的LinearLayout会平分横向的空间,框架就设计好了,之后是给其添加字体颜色与图片,背景颜色等,图片的设置方式是@+此项目中的某文件夹名/文件名。
至此,底端的XML文件编写完成。
中间部分文件编写
由于这个类微信的界面有四个不同的中间部分文件,需要分别编写,但他们的格式大致相同,写了一个之后其他的三个作轻微的修改即可。
在之后这部分的文件会添加更多丰富的功能,这里先用文本来代替,要完成的是居中文本显示
android:layout_width=“wrap_content”
android:layout_height=“match_parent”
android:gravity=“center”
android:layout_weight=“1”
在这里插入图片描述

效果如图,四个文件相似,解释文本不同,至此中间部分文件编写完成。
activity_main.xml文件编写
此文件的目的是将此前编写的上中下三个部分进行整合
分别添加


可将上端文件和底部文件导入

Java文件编写

概述
首先根据这个项目的结构可以知道大致要编写5个Java文件,分别是MainActivity和四个界面的实现,且四个界面的设计应当是类似的。
界面实现的文件
new一个fragment文件
在这里插入图片描述
Fragment是一种可以嵌入在活动中的UI片段,能够让程序更加合理和充分地利用大屏幕的空间,出现的初衷是为了适应大屏幕的平板电脑,可以将其看成一个小型Activity,又称作Activity片段。
在其return中写入要输出的界面文件名,四个文件是相似的。
主文件编写
编写之前应当要知道要完成什么功能,点击对应的图片之后要有相应,且响应的是对应的界面,并且图标的颜色会随着点击发生变化,之前生成的界面也会在下一个点击之后隐藏起来,这样可以避免生成的界面发生重叠现象。
然后我们就可以就开始编写函数
首先,我们需要将4个页面放到Framelayout中,为此,需要编写一个initfragment()函数

private void initFragment(){
fm = getSupportFragmentManager();
FragmentTransaction transaction = fm.beginTransaction();
transaction.add(R.id.id_content,mTab01);
transaction.add(R.id.id_content,mTab02);
transaction.add(R.id.id_content,mTab03);
transaction.add(R.id.id_content,mTab04);
transaction.commit();

下一个我们需要做的是将button与图片联系起来,因为监听是通过button来的,这个函数要实现的功能就是通过点击图片完成监听,代码如下

private void initView(){
mTabWeiXin = (LinearLayout) findViewById(R.id.id_tab_weixin);
mTabFri = (LinearLayout) findViewById(R.id.id_tab_fri);
mTabContact = (LinearLayout) findViewById(R.id.id_tab_contact);
mTabSetting = (LinearLayout) findViewById(R.id.id_tab_setting);
mImgWeiXin = (ImageButton) findViewById(R.id.id_tab_weixin_img);
mImgFri = (ImageButton) findViewById(R.id.id_tab_fri_img);
mImgContact = (ImageButton) findViewById(R.id.id_tab_contact_img);
mImgSetting = (ImageButton) findViewById(R.id.id_tab_setting_img);
}

接下来写一个函数来控制图片颜色的变换,其意义是点击一个图片之后该图片就会变亮,代码实现如下:

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);
mImgFri.setImageResource(R.drawable.tab_find_frd_pressed);
break;
case 2:
transaction.show(mTab03);
mImgContact.setImageResource(R.drawable.tab_address_pressed);
break;
case 3:
transaction.show(mTab04);
mImgSetting.setImageResource(R.drawable.tab_settings_pressed);
break;
default:
break;
}

其功能是通过点击之后调出相应的图片来实现
由于四个页面都在fragment中,如果不隐藏会造成显示内容的重叠,因此我们的解决思路是在显示一个界面之前将所有的界面都hide,点击对应的button之后再把对应的页面显示出来,所以需要一个hide功能的函数,实现如下:
private void hidefragment(FragmentTransaction transaction){
transaction.hide(mTab01);
transaction.hide(mTab02);
transaction.hide(mTab03);
transaction.hide(mTab04);
transaction.commit();
}

在完成了上述的功能之后,会发现我们还缺少一个监听函数
public void onClick(View v){
resetimg();
switch (v.getId()){
case R.id.id_tab_weixin_img:
selectfragment(0);
break;
case R.id.id_tab_fri_img:
selectfragment(1);
break;
case R.id.id_tab_contact_img:
selectfragment(2);
break;
case R.id.id_tab_setting_img:
selectfragment(3);
break;
default:
break;
}

它通过获取到指定页面的id来实现监听
完成之后我们意识到可能还需要一个函数来调用灰色的图片,以让点击过后的图片回复原色,这个函数的功能就是调出指定图片的位置
private void resetimg(){
mImgWeiXin.setImageResource(R.drawable.tab_weixin_normal);
mImgFri.setImageResource(R.drawable.tab_find_frd_normal);
mImgContact.setImageResource(R.drawable.tab_address_normal);
mImgSetting.setImageResource(R.drawable.tab_settings_normal);
}
最后的onCreate函数如下:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
initFragment();
initView();
selectfragment(0);
initEvent();
}

要注意的是这个程序采用的是监听整个屏幕,这样对内存的消耗巨大,因此在最后可以编写一个优化的函数:
private void initEvent(){
mImgWeiXin.setOnClickListener(this);
mImgFri.setOnClickListener(this);
mImgContact.setOnClickListener(this);
mImgSetting.setOnClickListener(this);
}

这个函数的意义是指定要监听的部分,可以减少内存的消耗。
最后,由于点击的是底端文件中的不分完成的监听,因此需要在每个部分中添加
android:clickable=“false”
android:onClick=“onClick”
以完成监听,至此,功能就全部实现了。
效果如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代码仓库地址
https://gitee.com/atbon/mobile-development-technology.git

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

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

相关文章

移动开发一:类微信门户界面框架设计

设计目标: 本作业框架需要使用fragment,activity来实现一个类微信门户界面的设计。 功能说明: 这个框架需要设计出的要点有两点: 1. 顶部标识需要常驻 2. 底部按钮切换时可以变换样式或者颜色,同时主页面内容切换 代码…

安卓开发 微信ui界面设计 (Android Studio)

功能: 开发一个类似微信的主页面框架,UI布局为上中下结构,包含4个tab界面: 开发技术为: layout xml、控件、监听,fragment; 设计流程: 创建项目 改下项目名,编程语言为java UI界面 UI界面由多个…

移动开发技术一:微信门户界面设计

目录 一、设计目标二、功能说明三、代码解析1.顶部代码2.底部代码3.基本布局代码4.中部布局代码5.MainActivity.java 四、运行展示五、源码仓库地址Gitee 总结 一、设计目标 1)完成类微信的门户页面框架设计,APP最少必须包含4个tab页面,框架设…

第004天:APP在平板上的UI布局设计

当今是移动设备发展非常迅速的时代,不仅手机已经成为了生活必需品,就连平板电脑也变 得越来越普及。平板电脑和手机最大的区别就在于屏幕的大小,一般手机屏幕的大小会在3英寸 到6英寸之间,而一般平板电脑屏幕的大小会在7英寸到10英…

android开发——类微信界面设计

功能要求 开发一个类微信的主界面框架,UI布局为上中下布局,包含4个tab界面,当点击选择底部部件的时候进行页面切换 开发技术 layout xml、控件、监听、fragment 页面设计 微信的界面布局分为上中下三个部分。 (1&#xff09…

类微信界面设计1

1. 设计目标 实现一个类似微信的底部tab栏切换 2. 功能说明 一个类微信的app&#xff0c;现阶段完成功能为点击对应按钮能够切换到对应界面 3. 代码解析 1).头部 使用LinearLayout布局。 <?xml version"1.0" encoding"utf-8"?> <LinearLayo…

马原强化考点

马原核心考点 考点1 非重点 马克思主义的内涵和构成&#xff08;马克思主义是什么&#xff09; 内涵&#xff1a; 1.创立者 &#xff1a;马恩创立&#xff0c;后继者发展 2.内容 &#xff1a;自然&#xff0c;社会&#xff0c;人类思维&#xff08;唯物史观不包括自然&#xff…

[哲学部分]马克思主义基本原理概论思维导图

2020/3/3 更新 之前链接关了补一个 链接&#xff1a;https://pan.baidu.com/s/1tsmAkdRG7jE1eMz34Ea4qQ 提取码&#xff1a;7y2j 2019/10/23 更新 由于最近比较忙 没时间一一回复大家的评论和邮件&#xff0c;我把文件放到了百度云&#xff0c;大家自取 谢谢大家支持 链接&…

马原,期末复习部分知识点,思维导图

原链接&#xff1a;https://gitmind.cn/app/doc/39a4c3a6e1a3d7892c79030d028cadbf 感谢观看&#xff01;

马原复习思维导图-前三章

一天一个奇迹系列&#xff0c;这个思维导图做的时候很爽&#xff0c;然而并没有什么用 ……马原这种东西看不懂就是看不懂&#xff0c;要应付考试还是要专心听课555 绪论部分 第一章 第二章 第三章

《马克思主义基本原理》复习重点

什么是马克思主义&#xff1f; 1、马克思主义是马克思和恩格斯共同创立并为后继者所不断发展的科学理论体系。 2、马克思理论是关于科学、社会、人类思维发展一般规律的学说&#xff0c;是关于社会主义必将代替资本主义&#xff0c;最终实现共产主义的学说 3、马克思主义是关…

《马克思主义基本原理》复习整理

马原是我第一门认真学习的政治类课程&#xff0c;当然要记录一下。听说马原期末很难&#xff0c;所以认真看了下书和提纲&#xff0c;学习马原之后&#xff0c;对事物的本质有了更深的理解&#xff0c;理论知识也没有想象中那么晦涩难懂&#xff0c;顺便整理出以下的资料&#…

考研马原 知识点 做题技巧 同类比较 重要会议 1800易错题 思维导图整理

本文的思维导图将考研马原进行了整理并标记出重点内容&#xff0c;同时对于同类事件&#xff0c;按时间顺序的时间都进行了整理&#xff0c;而且对于1800中的易错题目等重点内容也有整理 思维导图源文件已经发布在我的资源当中&#xff0c;有需要的可以去 我的主页 了解更多学…

GPT对SaaS领域有什么影响?

GPT火了&#xff0c;Chat GPT真的火了。 突然之间&#xff0c;所有人都在讨论AI&#xff0c;最初的访客是程序员、工程师、AI从业者&#xff0c;从早高峰写字楼电梯里讨论声&#xff0c;到村里大爷们的饭后谈资&#xff0c;路过的狗子都要和它讨论两句GPT的程度。 革命的前夜…

计算机英语ppt演讲稿,英语的ppt演讲稿

英语的ppt演讲稿 to make a better city, planners aimed at creating a city in which the insalubrious environment and social structure would be defeated by a reordering of physical and social arrangements, so that all the citizens could attain the benefits of…

网络安全复习总结

目录 Ch1 网络安全基础1.1 网络安全的总的目标1.2 防范技术(主流网络安全技术)1.3 网络安全技术支撑1.4 专业网络安全技术1.5 信息安全保障体系组成(PDRR)1.6 网络体系结构的深入理解、各层加密的作用1.7 帧、IP报文、TCP报文、UDP报文格式TCP首部三次握手半连接队列OSI七层网络…

软件安全期末总结

写在前面 所用教材&#xff1a;彭国军等人编著的第一版 博客地址&#xff1a;https://blog.csdn.net/zss192 说明&#xff1a;博客为根据老师所画重点有针对性的总结&#xff0c;供个人复习使用&#xff0c;仅供参考 第一章 软件安全概述 1.软件安全包括三个方面&#xff…