安卓开发之设计微信界面

一、功能需求

完成一个类似微信页面的布局,要求:

  1. 页面最上方是标题居中
  2. 页面中间界面显示内容,内容随下方栏的选择而切换
  3. 页面最下方有四个按钮
  4. 点击按钮后,按钮图标会变换颜色,且显示框变换内容

项目大致框架如下:

二、页面布局

顶部和底部

1.head.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"><TextViewandroid:id="@+id/textView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:background="@color/black"android:text="微信"android:textAlignment="center"android:textColor="@color/white"android:textSize="30sp" />
</LinearLayout>

2.bottom.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/layout_all"android:layout_width="match_parent"android:layout_height="wrap_content"><LinearLayoutandroid:id="@+id/layout1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:orientation="vertical"><ImageViewandroid:id="@+id/chat"android:layout_width="100dp"android:layout_height="106dp"app:srcCompat="@drawable/chat_normal"tools:ignore="ImageContrastCheck" /><TextViewandroid:id="@+id/textView1"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="微信"android:textAlignment="center" /></LinearLayout><LinearLayoutandroid:id="@+id/layout2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:orientation="vertical"><ImageViewandroid:id="@+id/imageView2"android:layout_width="100dp"android:layout_height="106dp"app:srcCompat="@drawable/people_normal" /><TextViewandroid:id="@+id/textView2"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="联系人"android:textAlignment="center" /></LinearLayout><LinearLayoutandroid:id="@+id/layout3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:orientation="vertical"><ImageViewandroid:id="@+id/imageView3"android:layout_width="100dp"android:layout_height="106dp"app:srcCompat="@drawable/find_normal" /><TextViewandroid:id="@+id/textView3"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="发现"android:textAlignment="center" /></LinearLayout><LinearLayoutandroid:id="@+id/layout4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:orientation="vertical"><ImageViewandroid:id="@+id/imageView4"android:layout_width="100dp"android:layout_height="104dp"app:srcCompat="@drawable/personal_normal" /><TextViewandroid:id="@+id/textView4"android:layout_width="122dp"android:layout_height="wrap_content"android:text="我的"android:textAlignment="center" /></LinearLayout>
</LinearLayout>

效果如下:

三、四个内容区

 fragment 和xml  ,下面用的是chat为例

package com.example.wechat;
import android.view.LayoutInflater;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.fragment.app.Fragment;import androidx.fragment.app.Fragment;public class chatfragment extends Fragment {public chatfragment(){}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// Inflate the layout for this fragmentreturn inflater.inflate(R.layout.chat, container, false);}
}

 

<?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:id="@+id/fragment_chat"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".chatfragment"><!-- TODO: Update blank fragment layout --><TextViewandroid:id="@+id/textView_chat"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:text="聊天界面"android:textSize="30sp" /></LinearLayout>

四、编写main 的activity和xml 

package com.example.wechat;import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;
import androidx.fragment.app.FragmentManager;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import androidx.appcompat.app.AppCompatActivity;public class MainActivity extends AppCompatActivity implements View.OnClickListener {private FragmentManager fm = getSupportFragmentManager();private LinearLayout linearLayout1, linearLayout2, linearLayout3, linearLayout4;private ImageView imageView1,imageView2,imageView3,imageView4;private Fragment chatfragment = new chatfragment();private Fragment peoplefragment = new peoplefragment();private Fragment findfragment = new findfragment();private Fragment personalFragment = new personfragment();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initFragment();initImageView();showFragment(0);linearLayout1.setOnClickListener(this);linearLayout2.setOnClickListener(this);linearLayout3.setOnClickListener(this);linearLayout4.setOnClickListener(this);}private void initFragment() {FragmentTransaction transaction = fm.beginTransaction();transaction.add(R.id.fragment_content, chatfragment);transaction.add(R.id.fragment_content, peoplefragment);transaction.add(R.id.fragment_content, findfragment);transaction.add(R.id.fragment_content, personalFragment);transaction.commit();}private void initImageView() {imageView1 = findViewById(R.id.chat);imageView2 = findViewById(R.id.imageView2);imageView3 = findViewById(R.id.imageView3);imageView4 = findViewById(R.id.imageView4);linearLayout1 = findViewById(R.id.layout1);linearLayout2 = findViewById(R.id.layout2);linearLayout3 = findViewById(R.id.layout3);linearLayout4 = findViewById(R.id.layout4);}private void hideFragment(FragmentTransaction transaction) {transaction.hide(chatfragment);transaction.hide(personalFragment);transaction.hide(findfragment);transaction.hide(personalFragment);}@Overridepublic void onClick(View view) {FragmentTransaction fragmentTransaction = fm.beginTransaction();hideFragment(fragmentTransaction);resetImg();switch (view.getId()) {case R.id.layout1:showFragment(0);break;case R.id.layout2:showFragment(1);break;case R.id.layout3:showFragment(2);break;case R.id.layout4:showFragment(3);break;default:break;}}private void resetImg() {    //调用灰色的图片,以让点击过后的图片回复原色imageView1.setImageResource(R.drawable.chat_normal);imageView2.setImageResource(R.drawable.people_normal);imageView3.setImageResource(R.drawable.find_normal);imageView4.setImageResource(R.drawable.personal_normal);}private void showFragment(int i) {    //控制图片颜色的变换,其意义是点击一个图片之后该图片就会变亮FragmentTransaction transaction = fm.beginTransaction();hideFragment(transaction);switch (i) {case 0:transaction.show(chatfragment);imageView1.setImageResource(R.drawable.chat_active);break;case 1:transaction.show(peoplefragment);imageView2.setImageResource(R.drawable.people_active);break;case 2:transaction.show(findfragment);imageView3.setImageResource(R.drawable.find_active);break;case 3:transaction.show(personalFragment);imageView4.setImageResource(R.drawable.personal_active);break;default:break;}transaction.commit();}
}
<?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"tools:context=".MainActivity"><include layout="@layout/head" /><FrameLayoutandroid:id="@+id/fragment_content"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"></FrameLayout><include layout="@layout/bottom"android:gravity="bottom"/>
</LinearLayout>

最终的效果

 gitee仓库地址

wechat 界面 · 935be06 · 吉吉的耳朵不太好/Wechat - Gitee.com

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

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

相关文章

干货!几招教你降低论文重复率!!

相信大家已经开始为毕业论文奋战了&#xff0c;甚至有的学校已经答辩结束了。今天&#xff0c;小编就说说史上最奇葩智能系统——知网论文检测系统&#xff0c;并且告诉大家躲避查重的几个大招。 各个学校对所谓论文原创度的标准要求不同&#xff0c;碰到要求重复率在30%或20%以…

最简单的 6 种防止数据重复提交的方法!(干货)

有位朋友&#xff0c;某天突然问磊哥&#xff1a;在 Java 中&#xff0c;防止重复提交最简单的方案是什么&#xff1f; 这句话中包含了两个关键信息&#xff0c;第一&#xff1a;防止重复提交&#xff1b;第二&#xff1a;最简单。 于是磊哥问他&#xff0c;是单机环境还是分布…

如何降重计算机SCI论文的重复率? - 易智编译EaseEditing

介绍几种降重方法&#xff1a; 1“中英中”互换法 用翻译软件先翻译成英文&#xff0c; 再翻译回中文&#xff0c;之后手工修改润色一下&#xff0c; 这样换了一种表达句式&#xff0c;但愿文意思没有改变。 值得一提的是&#xff0c;现在中英文互译软件已经非常强大了&…

对文本文件中出现的词进行次数统计

主要涉及读取文本文件、统计词出现的数目、排序、隐藏函数lambda。 随便从网页复制一篇文章保存成“train.txt”&#xff0c;采用以下代码读取txt文件&#xff1a; def load_stop_words(file "stopwords.txt"):with open(file,"r",encoding"utf-8&…

最简单的6种防止数据重复提交的方法!(干货)

有位朋友&#xff0c;某天突然问磊哥&#xff1a;在 Java 中&#xff0c;防止重复提交最简单的方案是什么&#xff1f; 这句话中包含了两个关键信息&#xff0c;第一&#xff1a;防止重复提交&#xff1b;第二&#xff1a;最简单。 于是磊哥问他&#xff0c;是单机环境还是分布…

马斯克成立人工智能公司X.AI:对抗ChatGPT 已买1万个GPU

雷递网 雷建平 4月15日 根据内华达州的一份文件&#xff0c;特斯拉CEO埃隆马斯克 (Elon Musk) 已经成立了一家名为X.AI Corp的新人工智能公司。马斯克为X.AI Corp的唯一董事&#xff0c;而贾里德伯查尔&#xff0c;马斯克家族办公室的董事则是其秘书。 X.AI已允许出售这家私人持…

十大网络安全上市公司分析,让我们重点聊聊F5

网络安全上市厂商业务广泛分布于网络安全硬件、软件&#xff0c;网络安全服务等板块&#xff0c;总体来看&#xff0c;十大网络安全上市公司的竞争可谓是如火如荼。今天让我们把目光集中在F5&#xff0c;这个能为我们所有人创造更安全的数字世界的企业&#xff0c;在应用及API交…

基于blinker的 microPython 小爱同学

官方没有基于esp8266 esp32的microPython 的SDK 翻了 c源码 照葫芦画瓢画出了 这个 100行左右 里面有个设置设备类型的链接 需要手动设置一次 然后就可以进米家绑定其他设备同步到小爱同学啦 比官方的几百K缩小了很多 不过在官方源码翻协议倒是翻了一晚上。 https://download…

集美大学及集美大学诚毅学院的课表导入小爱同学

引言 由于学校教务系统在使用上存在一定的不便&#xff0c;无法在手机上简单地查看课程表&#xff0c;往往都需要通过截图的形式在手机上保存以供上课过程中查阅。本教程将介绍一种将集美大学及集美大学诚毅学院的课程表导入到小爱同学中的方法。 选择小爱课程表的理由是觉得市…

基于微信小程序的网上订餐系统 报告+任务书+开题报告+文献综述+中期PPT+外文翻译及原文+PPT+项目源码及数据库文件

摘要 随着微信小程序的飞速发展&#xff0c;很多系统随之兴起&#xff0c;微信已经是我们生活中的一部分&#xff0c;可不单单是人们用于沟通聊天的工具。还有很多公告平台、小程序也随之发展。大部分公众平台都只起到了一个信息消息的推送或者浏览的作用&#xff0c;而小程序的…

蚌埠学院教务系统自动导入课程表到小米/Redmi手机小爱同学课程表使用说明

文章目录 蚌埠学院教务系统自动导入课程表到小米/Redmi手机小爱同学课程表详细教学视频演示一、自我介绍二、使用说明1.使用条件2.读入数据 总结and已知问题 蚌埠学院教务系统自动导入课程表到小米/Redmi手机小爱同学课程表 蚌埠学院教务系统自动导入课程表到小米/Redmi手机小…

基于Javamail的邮件收发系统(系统+论文+开题报告+任务书+外文翻译+文献综述+答辩PPT)

毕业设计&#xff08;论文&#xff09; &#xff08; 20 届&#xff09; 论文&#xff08;设计&#xff09;题目 基于Javamail的邮件收发系统 作 者 二级学院、专业 班 级 指导教师&#xff08;职称&#xff09; 论 文 字 数 论文完成时间 20年月日 基于JavaMail的邮件…

电脑打不开网页,能ping通,能上QQ,解决办法。

方法一 修改网络配置 因为网络配置不正确无法访问外网的情况。 解决办法&#xff1a; WINR —>在运行里面输入cmd 输入 ipconfig 查看网络配置是否正确 如果不正确&#xff0c;右击网络–>属性–>更改适配器设置–>右击你现在连接的外网的–>属性–>双击…

计算机微信接收excel打不开怎么回事,电脑端微信打不开怎么解决

电脑端微信大家相信大家都用过了&#xff0c;但是有时候出现打不开情况怎么解决呢。下面由学习啦小编为你整理了电脑端微信网页版打不开怎么办的相关方法&#xff0c;希望对你有帮助! 电脑端微信网页版打不开解决方法如下 打开浏览器&#xff0c;点“工具”→“管理加载项”那里…

微信粤语语音转文字 讯飞输入法更懂粤语直出文字

微信语音转文字功能在一定程度上缓解了语音消息的压力。但是&#xff0c;如果对方讲的是方言怎么办&#xff1f;日前&#xff0c;腾讯微信团队发微博称&#xff0c;广东地区用户支持粤语语音转文字功能。然而广东以外的广东人怎么办&#xff1f;网友们表示&#xff1a;用讯飞输…

仿微信语音输入页面(讯飞语音)

boss最近提出新的需求&#xff0c;说是项目中的语音输入&#xff08;讯飞语音&#xff09;界面不够友好&#xff0c;要求按照微信语音输入界面进行修改&#xff0c;于是乎有了本篇文章。 项目中用到的语音输入采用的是讯飞的SDK。集成讯飞语音输入&#xff0c;请参考官方文档。…

【效率神器】电脑上实现语音输入文字

标签&#xff1a;【效率神器】PC端语音输入文字&#xff0c;电脑端语音输入文字&#xff0c;如何轻松在电脑上实现语音输入 有时候电脑端打文字还是比较麻烦的&#xff0c;用语音转成文字输入还是比较简单的&#xff0c;而且速度快。那么电脑端怎么通过语音输入了&#xff1f;…

Voice input 语音输入

Voice input 语音输入 Voice is one of the three key forms of input on HoloLens. It allows you to directly command a hologram without having to use gestures. You simply gaze at a hologram and speak your command. Voice input can be a natural way to communic…

语音识别打字软件

广告关闭 2017年12月&#xff0c;云社区对外发布&#xff0c;从最开始的技术博客到现在拥有多个社区产品。未来&#xff0c;我们一起乘风破浪&#xff0c;创造无限可能。 腾讯云语音识别服务开放实时语音识别、一句话识别和录音文件识别三种服务形式&#xff0c;满足不同类型…

语音输入实现方法

这里介绍的是大家以后要用到的html强大功能&#xff0c;可直接给输入框增加语音功能&#xff0c;下面我们先来看看实现方法。 大家可以看到在输入框右边的麦克风图标&#xff0c;点击麦克风就能够进行语音识别了。 其实很简单&#xff0c;语音识别是html5的基本功能&#xff0…