AndroidStudio使用之仿微信首页界面
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使用之仿微信首页界面相关推荐
- AndroidStudio使用之实现微信首页界面
@[TOC]AndroidStudio使用之实现微信首页界面 AndroidStudio使用之实现微信首页界面 详细分析介绍AS实现微信首页的流程,并附有源码 界面分析 我们对微信首页做一个分析,看需 ...
- 高仿微信聊天界面长按弹框样式
效果图 背景 在公司做的项目里面,刚好有需要用到微信聊天界面长按弹框样式这种UI的. 网上找了一下,没找到. Android现成的 ListPopupWindow又不能满足需求. 因此在非上班时间撸一 ...
- android 仿微信聊天界面 以及语音录制功能,Android仿微信录制语音功能
本文实例为大家分享了Android仿微信录制语音的具体代码,供大家参考,具体内容如下 前言 我把录音分成了两部分 1.UI界面,弹窗读秒 2.一个类(包含开始.停止.创建文件名功能) 第一部分 由于6 ...
- android仿微信聊天功能,Android高仿微信聊天界面代码分享
微信聊天现在非常火,是因其界面漂亮吗,哈哈,也许吧.微信每条消息都带有一个气泡,非常迷人,看起来感觉实现起来非常难,其实并不难.下面小编给大家分享实现代码. 先给大家展示下实现效果图: OK,下面我们 ...
- php写的微信聊天界面,Android_Android高仿微信聊天界面代码分享,微信聊天现在非常火,是因其 - phpStudy...
Android高仿微信聊天界面代码分享 微信聊天现在非常火,是因其界面漂亮吗,哈哈,也许吧.微信每条消息都带有一个气泡,非常迷人,看起来感觉实现起来非常难,其实并不难.下面小编给大家分享实现代码. 先 ...
- android 微信高仿,Android高仿微信聊天界面代码分享
微信聊天现在非常火,是因其界面漂亮吗,哈哈,也许吧.微信每条消息都带有一个气泡,非常迷人,看起来感觉实现起来非常难,其实并不难.下面小编给大家分享实现代码. 先给大家展示下实现效果图: OK,下面我们 ...
- Vue3+ElementPlus网页端聊天|vue3.0仿微信/QQ界面实例
vue3-webchat 基于vue3.0.5开发的仿微信|QQ界面桌面端聊天实例. 运用vue3.x全家桶技术+element-plus+v3layer+v3scroll搭建的仿微信/QQ界面网页聊 ...
- web仿微信支付界面,自定义模拟键盘
web仿微信支付界面,自定义模拟键盘 可谓是煞费苦心 还是自己技能不足,不过还是出来了 这里先声明:下面不是全部代码,想要全部代码的可以到个人主页下载 先看下效果图 第一板块是html界面 有需要完整 ...
- #解决仿微信聊天界面键盘遮盖聊天的界面
解决仿微信聊天界面键盘遮盖聊天的界面 注意聊天界面的activity一定不能处于全屏模式 //第一步设置属性 <!--模拟的布局文件--><?xml version="1. ...
最新文章
- python -socket -client
- 17 个方面,综合对比 Kafka、RabbitMQ、RocketMQ、ActiveMQ 四个分布式消息队列
- R语言dplyr包对独特值(distinct)进行计数实战
- layui使用方法——图标
- 持续集成(CI)- 各种工具的资料总结
- ROS-OccupancyGrid学习笔记
- LODOP不同打印机出现偏移问题
- java虚拟机可以处理_Java虚拟机对类加载的处理机制
- 如何关闭热点资讯,如何关闭360浏览器热点资讯
- python中字典dictionary详解及基本使用
- Vue源码解析系列——响应式原理篇:理解Dep类和Watcher类
- 2022年ps应该选择哪个版本
- 基础算法练习200题07、编框
- win10计算机历史记录,教你win10如何查看电脑开机历史记录
- 比较器应用一:滞回比较器
- 《区块链+》读书感想
- 黑客用我们服务器挖矿了
- 在ubuntu上解包RK3288固件
- iphone投影到电脑屏幕,QuickTime出现报错和黑屏的解决方案
- 【排错日记】pageContext被解析为$%7BpageContext.request.contextPath%7D
热门文章
- Springboot框架整合Mybatis-plus实战动态SQL以及常见的Mybatis面试题
- Python3.5抓取代理IP并验证有效性
- 【Java】我的世界Java版外挂制作 [1] - 模块管理器与第一个模块
- Python-练习 5 更多变量和打印
- Win7怎么进入安全模式改密码
- React Native开发环境配置检测
- 仿鱼爪新媒账号过户转让平台源码/友价内核账号交易源码
- WOS搜索输出文件的格式整理
- java bigdecimal 开方_JAVA BigDecimal使用牛顿迭代法计算平方根(开方)
- mysql8删除root用户,Window下如何恢复被删除的Mysql8.0.17 Root账户及密码