【剑灵攻略】001--底部菜单栏实现

底部菜单栏实现,先看效果:

1、全屏无标题

<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">

2、底部菜单布局文件 action_bar_bottom.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="60dp"
    android:layout_gravity="bottom"
    android:background="@color/actionBarBg"
    android:orientation="horizontal"
    android:baselineAligned="true">

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="60dp"
        android:gravity="center"
        android:layout_weight="1"
        android:orientation="vertical" >

        <ImageView
            android:id="@+id/img_news"
            android:contentDescription="@null"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:src="@drawable/tab_btn_sel1" />

        <TextView
            android:id="@+id/txt_news"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="@string/bottom_action_bar_news"
            android:textColor="@color/white" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="60dp"
        android:gravity="center"
        android:layout_weight="1"
        android:orientation="vertical" >

        <ImageView
            android:id="@+id/img_video"
            android:contentDescription="@null"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:src="@drawable/tab_btn_nor2" />

        <TextView
            android:id="@+id/txt_video"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="@string/bottom_action_bar_video"
            android:textColor="@color/white" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="60dp"
        android:gravity="center"
        android:layout_weight="1"
        android:orientation="vertical" >

        <ImageView
            android:id="@+id/img_profession"
            android:contentDescription="@null"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:src="@drawable/tab_btn_nor3" />

        <TextView
            android:id="@+id/txt_profession"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="@string/bottom_action_bar_profession"
            android:textColor="@color/white" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="60dp"
        android:gravity="center"
        android:layout_weight="1"
        android:orientation="vertical" >

        <ImageView
            android:id="@+id/img_data"
            android:contentDescription="@null"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:src="@drawable/tab_btn_nor4" />

        <TextView
            android:id="@+id/txt_data"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="@string/bottom_action_bar_data"
            android:textColor="@color/white" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="60dp"
        android:gravity="center"
        android:layout_weight="1"
        android:orientation="vertical" >

        <ImageView
            android:id="@+id/img_more"
            android:contentDescription="@null"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:src="@drawable/tab_btn_nor5" />

        <TextView
            android:id="@+id/txt_more"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="@string/bottom_action_bar_more"
            android:textColor="@color/white" />
    </LinearLayout>

</LinearLayout>

分析布局:

LinearLayout -->水平排列

  LinearLayout -->竖直排列

    ImageView

    TextView

  ...

3、activity_main.xml

<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"
    tools:context=".MainActivity" >

    <include
        android:layout_gravity="bottom"
        layout="@layout/action_bar_bottom" />

</LinearLayout>

4、后置代码

// 实现OnClickListener,监听点击事件
public class MainActivity extends Activity implements OnClickListener{
    private ImageView imgNews;
    private ImageView imgVideo;
    private ImageView imgData;
    private ImageView imgProfession;
    private ImageView imgMore;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        imgNews = (ImageView) findViewById(R.id.img_news);
        imgVideo = (ImageView) findViewById(R.id.img_video);
        imgProfession = (ImageView) findViewById(R.id.img_profession);
        imgData = (ImageView) findViewById(R.id.img_data);
        imgMore = (ImageView) findViewById(R.id.img_more);

        // 给图片注册点击事件监听器
        imgNews.setOnClickListener(this);
        imgVideo.setOnClickListener(this);
        imgProfession.setOnClickListener(this);
        imgData.setOnClickListener(this);
        imgMore.setOnClickListener(this);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public void onClick(View v) {
        // 所有图片置为未选中
        imgNews.setImageResource(R.drawable.tab_btn_nor1);
        imgVideo.setImageResource(R.drawable.tab_btn_nor2);
        imgProfession.setImageResource(R.drawable.tab_btn_nor3);
        imgData.setImageResource(R.drawable.tab_btn_nor4);
        imgMore.setImageResource(R.drawable.tab_btn_nor5);

        // 根据点击的图片设置
        switch (v.getId()) {
        case R.id.img_news:
            imgNews.setImageResource(R.drawable.tab_btn_sel1);
            break;
        case R.id.img_video:
            imgVideo.setImageResource(R.drawable.tab_btn_sel2);
            break;
        case R.id.img_profession:
            imgProfession.setImageResource(R.drawable.tab_btn_sel3);
            break;
        case R.id.img_data:
            imgData.setImageResource(R.drawable.tab_btn_sel4);
            break;
        case R.id.img_more:
            imgMore.setImageResource(R.drawable.tab_btn_sel5);
            break;
        }
    }

}

时间: 2024-10-28 02:54:30

【剑灵攻略】001--底部菜单栏实现的相关文章

[学习OpenCV攻略][001][Ubuntu安装及配置]

学习环境: 1.操作系统 Ubuntn 2.学习书籍 <学习OpenCV> 3.OpenCV版本 opencv-1.0.0 root登入配置 Ubuntn默认不允许root用户登入,在登录窗口只能看到普通用户和访客用户.我们做开发需要经常用到root权限,所以把root用户设置成自动登录用户. 1.以普通用户登录后,在终端中输入: sudo passwd root,给root用户添加密码. 2.su root,切换到root用户. 3.vim /etc/lightdm/lightdm.conf

从零开始PHP攻略(001)——Bob的汽车零部件商店

1.创建订单表单 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>创建订单表单</title> </head> <body> <form action="processorder.php" method="post"> <table border="0&

linux shell 脚本攻略001

shell 脚本通常是以#!/bin/bash开始的文本文件.#!被置于解释器路径之前. 以bash为解释器进行解释所有命令行的命令. 有两种运行脚本的方式,一种是将脚本作为sh的命令行参数,另一种是将脚本作为具有可执行权限的可执行文件.将脚本作为命令行参数的运行方式如下: sh aa.sh :假定脚本文件就在当前路径下.否则写全路径执行.也可以通过修改脚本文件的权限来执行脚本chmod a+x aa.sh ./aa.sh就可以执行. 脚本中使用#代表注释. 终端打印: echo是用于终端打印的

【剑灵攻略】002、android工程引用方式

正确的引用工程的方式 普通的Java工程通过这种引入新的工程和外部的Jar包是没问题的,android工程下却出现问题纳闷了很久,依旧没弄明白.但经过摸索找到了一种正确的引入工程的方式: 首先,选中工程A,右键—>Properties—>Android ,看下面的图就知道了,一路OK,最后就成功引入了. 总结 思路一:将目标工程B打包成jar包,那么其他工程就能够直接引用了.但如果B工程中使用到了res里面的资源文件(也就是引用了R.java),由于R.java里面的是自动生成的,并且是动态的

【剑灵攻略】003、XXXfragment that is not a fragment错误,fragment认不出来

要注意的是fragment其实是有两个版本的,一个是 import android.support.v4.app.Fragment; 另外一个是 import android.app.Fragment; 这两个版本的fragment是不会兼容的.也就是说要不就全用fragment,要不就全用v4 fragment,不能混搭着用. 在这里我强烈建议初学者用第二个,也就是简单的fragment,接下来我说说两者的区别大家就知道为什么了. 1.最低支持版本不同 android.app.Fragment

Linux基础:简明 VIM 练级攻略

世界上只有三种编辑器,EMACS.VIM和其它 个人觉得非常好的博文: 简明VIM练级攻略: http://coolshell.cn/articles/5426.html 无插件VIM编程技巧: http://coolshell.cn/tag/vim 跟我一起学习VIM:http://feihu.me/blog/2014/intro-to-vim/ .vimrc 文件: map <F9> :call SaveInputData()<CR> func! SaveInputData()

移动端点击事件全攻略,有你知道与不知道的各种坑

看标题的时候你可能会想,点击事件有什么好说的,还写一篇攻略?哈哈,如果你这么想,只能说明你too young to simple. 接触过移动端开发的同学可能都会面临点击事件的第一个问题:click事件的300ms延迟响应.不能立即响应给体验造成了很大的困扰,因此解决这个问题就成为了必然. 这个问题的解决方案就是: zepto.js的tap事件.tap事件可以理解为在移动端的click事件,而zepto.js因为几乎完全复制jQuery的api,因此常常被用在h5的开发上用来取代jquery.

人大笔记 | 请收下这份新学期笔记攻略!

上了大学, 你还保留着动笔的习惯吗? 作为互联网的原住民, 你还会在课上记笔记吗? 除了在word里写下心情, 你还会写日记或记手账吗? "秋毫虽细握非轻", 其实把很多事付诸笔端, 会给予生活更多有温度的记录. 新学期,从认真记笔记开始-- 人大人笔下的温度 民法总论 @杨茂坤 有了认真的笔记,考试周被民法支配的恐惧都少了一些呢(微笑) 历史 @廖悦辰 emmm-上面记的好多都没听说过 emmm-什么时候我学历史能这么认真? 英语 @成文琪 早上背英语单词时 我的笔记和头上的树叶脚下

前台页面优化全攻略(四)

通过前几篇文章,你应该已经掌握了很多优化网站的方法.现在你的网站加载速度已经很快了,但是你必须持续的监控你的网站,了解它的大小变化,要不然一段时间过去之后,它可能又成为了一个胖子. 如今每个页面平均已经达到1.7M,每年增长大概32%.你可以通过以下几个工具来查看你的网站是不是又在暴饮暴食,而且它们都是免费的. 1. Pingdom Pingdom是我喜欢的一个在线测试工具.它会揭露出所以你想知道的细节,你可以一清二楚的看到网站的现状:重量.加载速度.代码分析.性能评分.开发者建议,它还提供了一