文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

安卓开发——微信UI界面

2023-10-23 11:11

关注

一、功能说明

本次作业开发的是类似微信的主页面框架,UI布局为上中下结构,用户可通过点击底部导航栏切换板块内容,其中共包含四个板块,分别是“微信”、“通讯录”、“发现”和“我的”。

二、设计流程

1 页面设计

微信的界面布局分为上中下三个部分。

(1)第一部分,主要是显示界面的。

(2)第二部分,主要是“微信”、“通讯录”、“发现”和“我的”四个板块的具体内容。

(3)第三部分,主要是“微信”、“通讯录”、“发现”和“我的”四个板块的切换控件。

2 功能设计

实现点击底部控件切换到对应的板块界面。

(1)创建Fragment类及其对应的layout文件

(2)创建FragmentManager管理Fragment,以及FragmentTransaction

(3)设置监听

(4)设置控件被点击后的响应事件

三、核心代码详解

1 界面布局代码

1.1 总体布局 activity_main.xml

   ·                    

标签可以实现在一个layout文件中引用另一个layout文件的布局

此处则是在activity_main.xml文件中引入了top.xml文件和bottom.xml文件的布局

在FrameLayout中设置属性layout_weight=1可将FrameLayout填满界面中除了top和bottom的中间部分。

1.2 界面顶部 top.xml

1.3 界面中部

        

该部分的布局文件共有四个,分别是fra_xx.xml、fra_lx.xml、fra_fx.xml、fra_wd.xml

代码大致相同,只需修改对应的Fragment类和组件id即可

1.4 界面底部 bottom.xml

                    

 界面底部的布局稍微复杂一点,布局解释如下:

(1)最外层是一个水平的LinearLayout,使得放在里面的组件可水平放置

(2)第二层是四个垂直的LinearLayout,使得放在里面的组件可垂直放置,并且通过layout_weight将此四个LinearLayout组件均分其父布局,即每个组件占父布局的1/4。

(3)对于(2)中的每个LinearLayout都有一个ImageView和TextView,详细代码如上。

另外,ImageView组件所使用的图片需存放在/res/drawable文件夹中。

 

2 点击按钮跳转板块功能代码

Fragmentxx、Fragmentlx、Fragmentfx和Fragmentwd类的主要代码:

public class Fragmentxx extends Fragment {    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {        // Inflate the layout for this fragment        return inflater.inflate(R.layout.fra_xx, container, false);    }}

 Fragmentlx、Fragmentfx和Fragmentwd与上述部分的代码基本一致,主要区别在于R.layout._____  部分需对应其对应的layout文件

MainActivity类的主要代码:

 FragmentManager

FragmentManager manager;manager=getSupportFragmentManager();

Fragment对象

Fragment fragment1,fragment2,fragment3,fragment4;fragment1=new Fragmentxx();fragment2=new Fragmentlx();fragment3=new Fragmentfx();fragment4=new Fragmentwd();

 LinearLayout对象,对应的id是bottom.xml文件中的第二层LinearLayout的id

LinearLayout linearLayout1,linearLayout2,linearLayout3,linearLayout4;linearLayout1=findViewById(R.id.l_xiaoxi);linearLayout2=findViewById(R.id.l_lianxi);linearLayout3=findViewById(R.id.l_faxian);linearLayout4=findViewById(R.id.l_wode);

Transaction对象

    FragmentTransaction transaction;    //初始化,将所有fragment都添加到界面中部板块    //对应的id是activity_main.xml中的Fragment的id    public void inital(){        transaction=manager.beginTransaction()                .add(R.id.content,fragment1)                .add(R.id.content,fragment2)                .add(R.id.content,fragment3)                .add(R.id.content,fragment4);        transaction.commit();    }    //将所有的fragment隐藏起来    public void fragmentHide(){        transaction=manager.beginTransaction()                .hide(fragment1)                .hide(fragment2)                .hide(fragment3)                .hide(fragment4);        transaction.commit();    }    //将指定的fragment进行展示    public void fragmentShow(Fragment fragment){        transaction=manager.beginTransaction().show(fragment);        transaction.commit();    }

从上述代码中可以看到最终四个板块的布局文件时如何添加到主布局中间的空板块的:

(1)首先通过Fragmentxx类绑定板块对应的布局文件fra_xx.xml;

(2)然后在MainActivity类中创建Fragmentxx对象;

(3)最后通过Transaction将Fragmentxx对象添加到主布局中间的空板块。

 图片和文字颜色的改变

//定义组件对应的变量TextView t1,t2,t3,t4;ImageView im1,im2,im3,im4;t1=findViewById(R.id.text_xiaoxi);t2=findViewById(R.id.text_lianxi);t3=findViewById(R.id.text_faxian);t4=findViewById(R.id.text_wode);im1=findViewById(R.id.image_xiaoxi);im2=findViewById(R.id.image_lianxi);im3=findViewById(R.id.image_faxian);im4=findViewById(R.id.image_wode);
    //将指定图片和文字设置为灰色    public void defaultImagendText(){        im1.setImageResource(R.drawable.xiaoxi);        im2.setImageResource(R.drawable.lianxi);        im3.setImageResource(R.drawable.faxian);        im4.setImageResource(R.drawable.wode);        t1.setTextColor(Color.parseColor("#8a8a8a"));        t2.setTextColor(Color.parseColor("#8a8a8a"));        t3.setTextColor(Color.parseColor("#8a8a8a"));        t4.setTextColor(Color.parseColor("#8a8a8a"));    }

 监听设置如下:

public class MainActivity extends AppCompatActivity implements View.OnClickListener
linearLayout1.setOnClickListener(this);linearLayout2.setOnClickListener(this);linearLayout3.setOnClickListener(this);linearLayout4.setOnClickListener(this);

 点击按钮后的响应事件,响应逻辑如下:

(1)点击后,先将所有图片和文字变成灰色,中间板块的内容也进行隐藏

(2)通过监听获取组件id

(3)根据获取得到的id,展示对应的板块,并且被点击的图片和文字颜色变绿

    public void onClick(View v) {        fragmentHide();        defaultImagendText();        switch (v.getId())        {            case R.id.l_xiaoxi:                fragmentShow(fragment1);                im1.setImageResource(R.drawable.xiaoxi_click);                t1.setTextColor(Color.parseColor("#04BE02"));                break;            case R.id.l_lianxi:                fragmentShow(fragment2);                im2.setImageResource(R.drawable.lianxi_click);                t2.setTextColor(Color.parseColor("#04BE02"));                break;            case R.id.l_faxian:                fragmentShow(fragment3);                im3.setImageResource(R.drawable.faxian_click);                t3.setTextColor(Color.parseColor("#04BE02"));                break;            case R.id.l_wode:                fragmentShow(fragment4);                im4.setImageResource(R.drawable.wode_click);                t4.setTextColor(Color.parseColor("#04BE02"));                break;        };    }

四、总结

1 运行结果展示

   

2 小结

通过本次作业练习掌握了一些安卓UI界面开发的基础知识,一开始由于组件有点多加上自己还不是很熟悉安卓UI界面的一些布局属性所以还有点云里雾里,在博客中对这些代码又重新梳理了一遍,感觉才好了些,总之收获还是很大的!

五、源码开源地址

HW_WeChat: Android 学习 (gitee.com)

来源地址:https://blog.csdn.net/qq_37766298/article/details/129327674

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯