一.静态界面实现(.xml)

功能需求

1.上方有标题(居中)
2.中间显示内容,内容随着下方控件而切换。
3.下方四个控件可切换。

实现页面展示:

共三大部分,顶部和底部一直不变,中间部分随着点击切换,还需要一个页面组合这六项内容,一共需要做七个UI前端页面设计

1.top.xml(上方居中有标题)

2.要求有四个控件,可以随时切换,分别是聊天,朋友,通讯录,设置这里就涉及到fragment的使用。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:orientation="horizontal"><TextViewandroid:id="@+id/textView2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:gravity="center"android:text="这是微信聊天界面"android:textSize="25sp" />
</LinearLayout>

3.bottom

 <LinearLayoutandroid:id="@+id/id_tab_weixin"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:orientation="vertical"><ImageButtonandroid:id="@+id/weixin_img"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="#000000"android:contentDescription="@string/app_name"app:srcCompat="@drawable/tab_weixin_normal" /><TextViewandroid:id="@+id/微信"android:layout_width="wrap_content"android:layout_height="match_parent"android:layout_gravity="center"android:text="微信"android:textColor="#ffffff"android:textSize="15dp" /></LinearLayout>

二.界面动态实现

功能需求 每一次点击需要切换 一个页面,并且当前页面对应图标必须标亮,其他则灰蒙蒙;默认打开时在第一个页面,第一个微信图标标亮

界面实现:

目录结构 在这里插入图片描述

这里主要运用了Fragment

Fragment的优势有以下几点:
    模块化(Modularity):我们不必把所有代码全部写在Activity中,而是把代码写在各自的Fragment中。
    可重用(Reusability):多个Activity可以重用一个Fragment。
    可适配(Adaptability):根据硬件的屏幕尺寸、屏幕方向,能够方便地实现不同的布局,这样用户体验更好。

接下来就是初始化界面与事件启动
分析界面实现效果,例如当点击某一导航键时,跳转到该界面主页面,同时除该导航键,其余导航键变暗

public class MainActivity extends AppCompatActivity implements View.OnClickListener {private Fragment mtab01 = new weixin_Fragment();private Fragment mtab02 = new friend_Fragment();private Fragment mtab03 = new txl_Fragment();private Fragment mtab04 = new setting_Fragment();private FragmentManager fm;private LinearLayout mTabWeixin;private LinearLayout mTabFrd;private LinearLayout mTabContact;private LinearLayout mTabSettings;private ImageButton mImgWeixin;private ImageButton mImgFrd;private ImageButton mImgContact;private ImageButton mImgSettings;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);ActionBar action_bar=getSupportActionBar();if(action_bar!=null)action_bar.hide();/*隐藏activity头*/setContentView(R.layout.activity_main);initFragment();initview();setselect(0);initEvent();}private void initFragment(){fm =getFragmentManager();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();}private void initview(){mTabWeixin=(LinearLayout)findViewById(R.id.id_tab_weixin);mTabFrd=(LinearLayout)findViewById(R.id.id_tab_frd);mTabContact=(LinearLayout)findViewById(R.id.id_tab_txl);mTabSettings=(LinearLayout)findViewById(R.id.id_tab_setting);mImgWeixin=(ImageButton)findViewById(R.id.weixin_img);mImgFrd=(ImageButton)findViewById(R.id.frd_img);mImgContact=(ImageButton)findViewById(R.id.txl_img);mImgSettings=(ImageButton)findViewById(R.id.settong_img);}private void setselect(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);mImgFrd.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);mImgSettings.setImageResource(R.drawable.tab_settings_pressed);break;default:break;}transaction.commit();}private void hideFragment(FragmentTransaction transaction){transaction.hide(mtab01);transaction.hide(mtab02);transaction.hide(mtab03);transaction.hide(mtab04);}@Overridepublic void onClick(View view) {resetImgs();switch(view.getId()){case R.id.id_tab_weixin:setselect(0);break;case R.id.weixin_img:setselect(0);break;case R.id.id_tab_frd:setselect(1);break;case R.id.frd_img:setselect(1);break;case R.id.id_tab_txl:setselect(2);break;case R.id.txl_img:setselect(2);break;case R.id.id_tab_setting:setselect(3);break;case R.id.settong_img:setselect(3);break;default:break;}}private void resetImgs(){mImgWeixin.setImageResource(R.drawable.tab_weixin_normal);mImgFrd.setImageResource(R.drawable.tab_find_frd_normal);mImgContact.setImageResource(R.drawable.tab_address_normal);mImgSettings.setImageResource(R.drawable.tab_settings_normal);}private void initEvent(){mTabWeixin.setOnClickListener(this);mTabFrd.setOnClickListener(this);mTabContact.setOnClickListener(this);mTabSettings.setOnClickListener(this);mImgWeixin.setOnClickListener(this);mImgFrd.setOnClickListener(this);mImgContact.setOnClickListener(this);mImgSettings.setOnClickListener(this);}
}
代码仓库:https://github.com/zzx-i/mywork-zzx-1.git

Android studio实现仿微信界面相关推荐

  1. Android studio制作简单微信界面

    Android studio微信界面简单制作 移动技术开发的第一课 完成展示 (先看看样子) 大概就是这个样子 1.放入图标 把下好的图标复制粘贴放在/app/res/drawble 目录下即可 2. ...

  2. Android studio实现类微信界面

    1.需要实现的功能: 页面具有标题微信 页面具有中间显示框 页面具有底部选择框,并且具有选择事件 页面底部选择框在进行改变的时候,我们需要中间显示框的页面同步改变 页面的布局清晰 效果展示如下 1.按 ...

  3. Android Studio制作简易微信界面

    文章目录 制作要求 一.top,buttom页面制作 二.四个tab页面和activity_main页面制作 1.四个tab页面 2.activity_main页面 三 . 五个java文件 制作要求 ...

  4. Android 二维码扫描(仿微信界面),根据Google zxing

    Android 二维码扫描(仿微信界面),根据Google zxing Android项目开发中经常会用到二维码扫描,例如登陆.支付等谷歌方面已经有了一个开源库(地址: https://github. ...

  5. [Android] Android 手机下 仿 微信 客户端 界面 -- 微聊

    Android 手机下 仿 微信 客户端 界面 -- 微聊 (包括聊天列表 + 聊天对话页 + 朋友圈列表页 + 我的/发现 列表页) 项目演示: 功能说明: 1)底部标签切换 (TabHost + ...

  6. android studio 微信登录界面,如何使用Android Studio开发用户登录界面

    满意答案 zhou9081 2016.05.21 采纳率:51%    等级:7 已帮助:411人 如何使用Android Studio开发用户登录界面,具体解决方案如下: 解决方案1: <:t ...

  7. 安卓开发— —仿微信界面(一)

    目录 一.项目内容 二.代码实现 1.项目结构 2.头部代码 3.底部代码 4.四个内容界面 5.窗体总布局 6.MainActivity实现点击图标与页面的互动 三.运行效果 四.总结 一.项目内容 ...

  8. 是男人就下100层【第一层】——高仿微信界面(4)

    上一篇<是男人就下100层[第一层]--高仿微信界面(3)>中我们完成了登录,这一篇看完成登录后的一个短暂加载和引导界面. 加载界面: <RelativeLayout xmlns:a ...

  9. android开发百度地图坐标偏差,利用百度地图Android sdk高仿微信发送位置功能及遇到的问题...

    接触了百度地图开发平台半个月了,这2天试着模仿了微信给好友发送位置功能,对百度地图的操作能力又上了一个台阶 我在实现这个功能的时候,遇到一些困难,可能也是别人将会遇到的困难,特在此列出 1.在微信发送 ...

最新文章

  1. 【FFmpeg】解决警告warning: xxx is deprecated [-Wdeprecated-declarations]的方法
  2. 又一无人机新法案将出炉,这次比FAA规定还严
  3. 构建百万访问量电子商务网站之LVS负载均衡(前端四层负载均衡器)[连载之电子商务系统架构]...
  4. java 集合自定义元素_java集合 collection-list-ArrayList 将自定义对象作为元素存到ArrayList集合中,并去除重复元素。...
  5. linux如何挂载U盘
  6. Nginx负载均衡+转发策略
  7. 分布式数据库在金融应用场景中的探索与实践
  8. 使用word2vec训练中文词向量
  9. 错误:cc1: error: unrecognized command line option “-m32”
  10. 开源管理软件 OpenEMR 被曝多个漏洞,可被用于攻陷医疗基础设施
  11. LADRC的学习——换被控对象进行仿真测试
  12. 使用VirtualHostX时如何编辑虚拟机内的文件?
  13. 【图像压缩】基于matlab GUI小波变换图像压缩【含Matlab源码 609期】
  14. Android开发指南(39) —— Testing Fundamentals
  15. (黑科技)超链接记录贴
  16. MySQL时区问题(与北京时间相差13小时)-- mybatisplus使用LocalDateTime.now()获取系统当前时间问题
  17. gprs信息上传服务器,车载GPS GPRS数据上传 源码带注释
  18. 多目标灰太狼算法求解环境经济调度问题(IEEE30)(Matlab实现)
  19. 软件定义汽车的关键—车载操作系统
  20. 数据安全和隐私保护(新生研讨课小论文)

热门文章

  1. PPT文件不能编辑,什么情况?
  2. php imap 安装_php7安装imap扩展
  3. 浅谈语音助手的对话管理与策略制定
  4. Fortify漏洞之Path Manipulation(路径篡改)
  5. 最近用到的shell命令
  6. 参加第一场多校大一训练赛后的感想
  7. cmd bat 执行多条
  8. Python 将MP3音频文件转换成MIDI乐谱文件
  9. FMM和BMM的python代码实现
  10. Windows 无法连接到打印机.打印后台程序服务没有运行