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

设计目标:

        本作业框架需要使用fragment,activity来实现一个类微信门户界面的设计。


功能说明:

        这个框架需要设计出的要点有两点:

                1. 顶部标识需要常驻

                2. 底部按钮切换时可以变换样式或者颜色,同时主页面内容切换


代码解析:

        首先我们先到一些开源的矢量图网站,如阿里巴巴矢量图标库找到我们需要的矢量图图标,找到喜欢的之后下载并存为.png模式。

        然后我们把这些图片文件移到我们项目目录的app-src-main-res-drawable目录下。这里我将它们都重命名了,以便于后续使用。

         接下来回到AS,在res-layout中新建两个文件,分别是top.xml和bottom.xml,接下来开始对top.xml进行布局以及代码编辑。

top.xml中控件:                                                                         

         控件属性:

        linearLayout(这里设置为vertical或者horizontal都会有报错,所以直接加上consrtaint weight)

         textview(可以找自己喜欢的颜色,如果没有的话,根据报错补成类似的颜色就好了)

         code

<LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:orientation="vertical"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"><TextViewandroid:id="@+id/textView1"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="1"android:background="#E69D86"android:gravity="center"android:text="wechat"android:textColor="#01579B"android:textSize="40sp" /></LinearLayout>

 bottom.xml中控件: 

        控件属性

        linearlayout(horizontal)

        

        linearlayout(vertical)

        

        img_chat

        

        textview

        

        code

<LinearLayoutandroid:layout_width="match_parent"android:layout_height="80dp"android:background="@android:drawable/dark_header"android:baselineAligned="false"android:orientation="horizontal"tools:ignore="MissingConstraints"><LinearLayoutandroid:id="@+id/linear_chat"android:layout_width="wrap_content"android:layout_height="match_parent"android:layout_weight="1"android:gravity="center"android:onClick="onclick"android:orientation="vertical"><ImageButtonandroid:id="@+id/img_chat"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="1"android:background="#E69D86"android:clickable="false"android:contentDescription="@string/app_name"android:scaleType="centerInside"android:visibility="visible"app:srcCompat="@drawable/message_blue" /><TextViewandroid:id="@+id/textView1"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="#E69D86"android:gravity="center"android:text="微信"android:textColor="#283593"android:textSize="15dp" /></LinearLayout><LinearLayoutandroid:id="@+id/linear_friend"android:layout_width="wrap_content"android:layout_height="match_parent"android:layout_weight="1"android:gravity="center"android:onClick="onclick"android:orientation="vertical"><ImageButtonandroid:id="@+id/img_friend"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="1"android:background="#E69D86"android:clickable="false"android:contentDescription="@string/app_name"android:scaleType="centerInside"app:srcCompat="@drawable/friends_blue" /><TextViewandroid:id="@+id/textView2"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="#E69D86"android:gravity="center"android:text="好友"android:textColor="#283593"android:textSize="15dp" /></LinearLayout><LinearLayoutandroid:id="@+id/linear_contact"android:layout_width="wrap_content"android:layout_height="match_parent"android:layout_weight="1"android:gravity="center"android:onClick="onclick"android:orientation="vertical"><ImageButtonandroid:id="@+id/img_find"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="1"android:background="#E69D86"android:clickable="false"android:contentDescription="@string/app_name"android:scaleType="centerInside"app:srcCompat="@drawable/find_blue" /><TextViewandroid:id="@+id/textView3"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="#E69D86"android:gravity="center"android:text="发现"android:textColor="#283593"android:textSize="15dp" /></LinearLayout><LinearLayoutandroid:id="@+id/linear_setting"android:layout_width="wrap_content"android:layout_height="match_parent"android:layout_weight="1"android:onClick="onClick"android:orientation="vertical"><ImageButtonandroid:id="@+id/img_setting"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="1"android:background="#E69D86"android:clickable="false"android:contentDescription="@string/app_name"android:scaleType="centerInside"app:srcCompat="@drawable/my_blue" /><TextViewandroid:id="@+id/textView4"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="#E69D86"android:gravity="center"android:text="我的"android:textColor="#283593"android:textSize="15dp" /></LinearLayout></LinearLayout>

  layout_main.xml中控件

code

<LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><includeandroid:id="@id/top"layout="@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><includeandroid:id="@id/bottom"layout="@layout/bottom"android:layout_width="match_parent"android:layout_height="wrap_content" /></LinearLayout>

现在我们的布局部分就完成了,需要实现的是切换页面功能。

新建四个xml页面,每个页面都有一个textview来提示主页面已经切换,可以设置属性使其美观

新建四个java文件 

将这个四个文件的返回值设置成对应的刚刚所说的.xml文件(这里展示聊天界面的,其余同理)

return inflater.inflate(R.layout.chat_page, container, false);

然后进入MainActivity

初始化成员参数

private Fragment chatFragment =new chat_Fragment();private Fragment friendFragment =new friends_Fragment();private Fragment findFragment =new find_Fragment();private Fragment myFragment =new my_Fragment();private  FragmentManager fragmentManager;private LinearLayout linearLayout1,linearLayout2,linearLayout3,linearLayout4;private ImageView imageView1,imageView2,imageView3,imageView4;private void initFun() {linearLayout1=findViewById(R.id.linear_chat);linearLayout2=findViewById(R.id.linear_friend);linearLayout3=findViewById(R.id.linear_contact);linearLayout4=findViewById(R.id.linear_setting);imageView1 = findViewById(R.id.img_chat);imageView2 = findViewById(R.id.img_friend);imageView3= findViewById(R.id.img_find);imageView4= findViewById(R.id.img_setting);linearLayout1.setOnClickListener(this);linearLayout2.setOnClickListener(this);linearLayout3.setOnClickListener(this);linearLayout4.setOnClickListener(this);initFragment();}

 注意这里需要将函数改成如下,否则“this”报错

public class MainActivity extends AppCompatActivity implements View.OnClickListener

默认显示聊天界面

private void initFragment(){fragmentManager=getSupportFragmentManager();FragmentTransaction transaction=fragmentManager.beginTransaction();transaction.add(R.id.id_content,chatFragment);transaction.add(R.id.id_content,friendFragment);transaction.add(R.id.id_content,findFragment);transaction.add(R.id.id_content,myFragment);hideFragment(transaction);transaction.show(chatFragment);transaction.commit();}

 隐藏fragment

    private void hideFragment(FragmentTransaction transaction){transaction.hide(chatFragment);transaction.hide(friendFragment);transaction.hide(findFragment);transaction.hide(myFragment);}

图片文字切换

private  void showfragment(int i){FragmentTransaction transaction=fragmentManager.beginTransaction();hideFragment(transaction);switch (i) {case 0:Log.d("setSelect","1");transaction.show(chatFragment);imageView1.setImageResource(R.drawable.message_orange);break;case 1:transaction.show(friendFragment);imageView2.setImageResource(R.drawable.friends_orange);break;case 2:transaction.show(findFragment);imageView3.setImageResource(R.drawable.find_orange);break;case 3:transaction.show(myFragment);imageView4.setImageResource(R.drawable.my_orange);break;default:break;}transaction.commit();}

 重写事件监听

    public void onClick(View v){resetImgs();switch (v.getId()){case R.id.linear_chat:showfragment(0);break;case R.id.linear_friend:showfragment(1);break;case R.id.linear_contact:showfragment(2);break;case R.id.linear_setting:showfragment(3);break;default:break;}}

主体oncreat函数调用

protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.layout_main);initFun();}

 


运行结果截图:

 

 

源码仓库gitee

 

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

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

相关文章

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

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

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

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

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

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

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

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

基于安全运营中心的工作总结

0x0 背景 日光之下&#xff0c;并无新事。又是一年新旧交替&#xff0c;去年年底的时候Freebuf的小编在关于安全工作总结这块还做了一个专题讨论&#xff0c;关于安全工作的总结复盘与规划估计也是许许多多安全从业者比较为难回答的问题了&#xff0c;最近大家也比较热门的讨论…