AndroidStudio使用之仿微信首页界面

介绍与分析AS实现微信首页的流程,
并附有源码链接: 码云

仿微信

  • AndroidStudio使用之仿微信首页界面
  • (一)文件目录
  • (二)界面分析
    • 1.top.xml
    • 2.bottom.xml
    • 3.tab01.xml
    • 4.activity_main.xml
  • (三)动态切换
    • 1.展示效果
    • 2.功能分析

(一)文件目录

(二)界面分析

1.top.xml

2.bottom.xml

3.tab01.xml

4.activity_main.xml


#关键代码

<?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"android:orientation="vertical"><include layout="@layout/top" /><FrameLayoutandroid:id="@+id/id_content"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"></FrameLayout><include layout="@layout/bottom"/></LinearLayout>

(三)动态切换

1.展示效果

2.功能分析

主要运用了fragment

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

#关键代码

package com.example.wechat;import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import android.view.View;
import android.app.FragmentManager;
import android.app.Fragment;
import android.app.FragmentTransaction;
import android.widget.ImageButton;
import android.widget.LinearLayout;public class MainActivity extends Activity implements View.OnClickListener{private Fragment mTab01=new WechatFragment();private Fragment mTab02=new friendFragment();private Fragment mTab03=new contactFragment();private Fragment mTab04=new settingsFragment();private FragmentManager fm;private LinearLayout mTabWechat;private LinearLayout mTabFriend;private LinearLayout mTabContact;private LinearLayout mTabSettings;private ImageButton mimgWechat;private ImageButton mimgFriend;private ImageButton mimgContact;private ImageButton mimgSettings;@Overrideprotected 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(){mTabWechat.setOnClickListener(this);mTabFriend.setOnClickListener(this);mTabContact.setOnClickListener(this);mTabSettings.setOnClickListener(this);}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(){mTabWechat = findViewById(R.id.id_tab_wechat);mTabFriend = findViewById(R.id.id_tab_friend);mTabContact = findViewById(R.id.id_tab_contact);mTabSettings = findViewById(R.id.id_tab_settings);mimgWechat = findViewById(R.id.id_tab_wechat_image);mimgFriend = findViewById(R.id.id_tab_friend_image);mimgContact = findViewById(R.id.id_tab_contact_image);mimgSettings = findViewById(R.id.id_tab_settings_image);}private void hideFragment(FragmentTransaction transaction){transaction.hide(mTab01);transaction.hide(mTab02);transaction.hide(mTab03);transaction.hide(mTab04);}private void resetImgs(){mimgWechat.setImageResource(R.drawable.tab_weixin_normal);mimgFriend.setImageResource(R.drawable.tab_find_frd_normal);mimgContact.setImageResource(R.drawable.tab_address_normal);mimgSettings.setImageResource(R.drawable.tab_settings_normal);}private void selectfragment(int i){FragmentTransaction transaction=fm.beginTransaction();hideFragment(transaction);switch (i){case 0:transaction.show(mTab01);mimgWechat.setImageResource(R.drawable.tab_weixin_pressed);break;case 1:transaction.show(mTab02);mimgFriend.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();}public void onClick(View v){resetImgs();switch (v.getId()){case R.id.id_tab_wechat:selectfragment(0);break;case R.id.id_tab_friend:selectfragment(1);break;case R.id.id_tab_contact:selectfragment(2);break;case R.id.id_tab_settings:selectfragment(3);break;}}
}

AndroidStudio使用之仿微信首页界面相关推荐

  1. AndroidStudio使用之实现微信首页界面

    @[TOC]AndroidStudio使用之实现微信首页界面 AndroidStudio使用之实现微信首页界面 详细分析介绍AS实现微信首页的流程,并附有源码 界面分析 我们对微信首页做一个分析,看需 ...

  2. 高仿微信聊天界面长按弹框样式

    效果图 背景 在公司做的项目里面,刚好有需要用到微信聊天界面长按弹框样式这种UI的. 网上找了一下,没找到. Android现成的 ListPopupWindow又不能满足需求. 因此在非上班时间撸一 ...

  3. android 仿微信聊天界面 以及语音录制功能,Android仿微信录制语音功能

    本文实例为大家分享了Android仿微信录制语音的具体代码,供大家参考,具体内容如下 前言 我把录音分成了两部分 1.UI界面,弹窗读秒 2.一个类(包含开始.停止.创建文件名功能) 第一部分 由于6 ...

  4. android仿微信聊天功能,Android高仿微信聊天界面代码分享

    微信聊天现在非常火,是因其界面漂亮吗,哈哈,也许吧.微信每条消息都带有一个气泡,非常迷人,看起来感觉实现起来非常难,其实并不难.下面小编给大家分享实现代码. 先给大家展示下实现效果图: OK,下面我们 ...

  5. php写的微信聊天界面,Android_Android高仿微信聊天界面代码分享,微信聊天现在非常火,是因其 - phpStudy...

    Android高仿微信聊天界面代码分享 微信聊天现在非常火,是因其界面漂亮吗,哈哈,也许吧.微信每条消息都带有一个气泡,非常迷人,看起来感觉实现起来非常难,其实并不难.下面小编给大家分享实现代码. 先 ...

  6. android 微信高仿,Android高仿微信聊天界面代码分享

    微信聊天现在非常火,是因其界面漂亮吗,哈哈,也许吧.微信每条消息都带有一个气泡,非常迷人,看起来感觉实现起来非常难,其实并不难.下面小编给大家分享实现代码. 先给大家展示下实现效果图: OK,下面我们 ...

  7. Vue3+ElementPlus网页端聊天|vue3.0仿微信/QQ界面实例

    vue3-webchat 基于vue3.0.5开发的仿微信|QQ界面桌面端聊天实例. 运用vue3.x全家桶技术+element-plus+v3layer+v3scroll搭建的仿微信/QQ界面网页聊 ...

  8. web仿微信支付界面,自定义模拟键盘

    web仿微信支付界面,自定义模拟键盘 可谓是煞费苦心 还是自己技能不足,不过还是出来了 这里先声明:下面不是全部代码,想要全部代码的可以到个人主页下载 先看下效果图 第一板块是html界面 有需要完整 ...

  9. #解决仿微信聊天界面键盘遮盖聊天的界面

    解决仿微信聊天界面键盘遮盖聊天的界面 注意聊天界面的activity一定不能处于全屏模式 //第一步设置属性 <!--模拟的布局文件--><?xml version="1. ...

最新文章

  1. python -socket -client
  2. 17 个方面,综合对比 Kafka、RabbitMQ、RocketMQ、ActiveMQ 四个分布式消息队列
  3. R语言dplyr包对独特值(distinct)进行计数实战
  4. layui使用方法——图标
  5. 持续集成(CI)- 各种工具的资料总结
  6. ROS-OccupancyGrid学习笔记
  7. LODOP不同打印机出现偏移问题
  8. java虚拟机可以处理_Java虚拟机对类加载的处理机制
  9. 如何关闭热点资讯,如何关闭360浏览器热点资讯
  10. python中字典dictionary详解及基本使用
  11. Vue源码解析系列——响应式原理篇:理解Dep类和Watcher类
  12. 2022年ps应该选择哪个版本
  13. 基础算法练习200题07、编框
  14. win10计算机历史记录,教你win10如何查看电脑开机历史记录
  15. 比较器应用一:滞回比较器
  16. 《区块链+》读书感想
  17. 黑客用我们服务器挖矿了
  18. 在ubuntu上解包RK3288固件
  19. iphone投影到电脑屏幕,QuickTime出现报错和黑屏的解决方案
  20. 【排错日记】pageContext被解析为$%7BpageContext.request.contextPath%7D

热门文章

  1. Springboot框架整合Mybatis-plus实战动态SQL以及常见的Mybatis面试题
  2. Python3.5抓取代理IP并验证有效性
  3. 【Java】我的世界Java版外挂制作 [1] - 模块管理器与第一个模块
  4. Python-练习 5 更多变量和打印
  5. Win7怎么进入安全模式改密码
  6. React Native开发环境配置检测
  7. 仿鱼爪新媒账号过户转让平台源码/友价内核账号交易源码
  8. WOS搜索输出文件的格式整理
  9. java bigdecimal 开方_JAVA BigDecimal使用牛顿迭代法计算平方根(开方)
  10. mysql8删除root用户,Window下如何恢复被删除的Mysql8.0.17 Root账户及密码