Android顶部标题栏的布局设计

目录
  • 自定义标题栏
  • 布局与九宫格背景图
    • 布局
    • 九宫格图片
  • 总结

自定义标题栏

通常我们的活动页面都会根据需要都会有不同的标题栏需要选择,一般有两个场景,一个是统一标题栏,通过引入布局到活动来进行重复使用,还有一个就是你的活动页面每个都需要定制的,就不能统一风格了。

布局与九宫格背景图

下面讲讲布局与九宫格的一些搭配。

布局

常用设计标题栏的布局都是通过流式布局来进行的。为什么呢?是不是觉得有时候流式布局反而更麻烦一点。标题栏一般都是有控件依赖关系的。为什么不采用相对布局呢?相对布局不就是解决依赖关系的么?是,但是有个设计的小技巧。相对布局的确对依赖关系是有很好的适用性。但是要考虑到项目需求的变更。你一开始设计的,可能是觉得位置都合适了。但是现在需求变更了呢,有些控件需要进行改动的话,是不是发现很麻烦,加入或者删除都有可能会让你的布局全都打乱,需要重新指定依赖关系。

那流式布局是怎么完成依赖关系的呢?我们可以给他加个view来进行隔开。通过权重进行分配,一样可以实现相对布局的效果。用一个0.1dp高度的view就可以分割开了。

当然这也不是绝对的,不是说一定要用流式会好一点,相对于大多数场景的标题栏都是比较简单的摆放,所以用流式也可以。但是如果啊,如果你的标题栏的控件又要水平摆放的,又要垂直摆放的,这种情况下,还想使用流式布局就需要进行布局嵌套了,相对来说开销会增大。如果是这种情况的话,我可能会觉得相对布局好点。

那是不是因为控件的依赖关系就不太想使用相对布局了呢?其实不然,相对布局最合适使用的地方,我觉得就不是相对控件的依赖关系(大范围指定控件),而是相对布局的依赖关系。这个就显得更加有用了。通常我们的页面也会有listview这些列表类的滚动场景,还会有使用系统软键盘进行输入的场景,如果我们不指定布局之间的依赖关系而采用流式布局这些,你就会发现,点击输入框弹出键盘的时候,你的页面底部就被键盘顶上去了,页面控件显示不全,这是因为高度发生了改变。当然你也可以自定义监听事件,对高度进行检测,再做逻辑处理。

总结:在设计布局的时候,相对布局尽量是相当于父布局上下左右进行相对。小的依赖关系尽量使用流式布局解决,类似于简单的标题栏,便于后期的维护。

九宫格图片

那讲完布局,与九宫格照片又有什么关系呢?
先说下九宫格图片,知道的朋友可以跳过。

首先是它的由来,技术的进步从来都是按需前进的。有这个东西就说明是遇到了什么问题。那问题是什么呢?

我们将某张图片设置为视图背景时,如果图片尺寸太小,系统则会自动拉伸图片使之填满背景。可以一旦图片拉的过大,其画面就容易变得模糊。为了解决这个问题,Android就设计了这个点九图片。它的扩展名是png,文件名后面常有“.9”字样。该图片划分成了3*3的区域。如果背景是一个形状图形,它的stroke节点的width属性已经设置了固定数值(如)1dp,那么无论该图形怎么拉伸,描边宽度始终是1dp。点九图片的实现原理与之类似,即拉伸图形时,只拉伸内部区域,不拉伸边缘线条。

下面就是一个九宫格的背景图片:

左边是加工区域,右边是图片预览区域,从上到下一次是纵向拉伸,横向拉伸、两方向同时拉伸的预览图片模式。在左侧窗口图片四周的马赛克处单击会出现一个黑点,把黑点左右或者上下拖动出一条黑线,不同的方向上的黑线就会表示出不同的效果。

左边黑线是指垂直方向的拉伸区域。垂直方向拉伸图片时,只有黑线区域内的图像会进行一个拉伸,不在黑线内的区域就不拉伸,还是维持原状,这样就能保证上下两侧的边框厚度不变。

上边黑线是指水平方向的拉伸区域。与上面是同理。水平拉伸,黑线内拉伸,黑线外不拉伸。

下边黑线是指该图片作为控件背景时,控件内部的文字左右边界就只能放在黑线区域内。如上图。这样的话,就会自动的有了android:paddingLeft和android:paddingRight的效果了。相当于自动为你添加了。

右边黑线于上边同理。只不过是方面不同。这里就相当于上下的边界在黑线内了。同样是相当于自动添加了android:paddingTop与android:paddingBottom的效果。

那是不是与我们的布局就很搭配了,我们通常标题栏之类的也需要设置一个颜色,那么九宫格图片就能很好的帮助到你,通过简单的黑线,你就可以减少一些设置上下左右边界的代码了,是不是觉得变简单了?

还有一点要注意的是,九宫格图片如果设置为视图背景的时候,而且是指定了Horizontal Padding和Vertical Padding,那么视图内部将一直与视图边缘保持固定的间距,无论怎么调整xml文件和java代码都是不行的。因为是九宫格图片设置的padding。

我们还可以给内部的控件设置一些状态列表背景进行改变, 这样在点击控件或者获取焦点的时候就可以,有一个明显的效果出来。

总结

到此这篇关于Android顶部标题栏的布局设计的文章就介绍到这了,更多相关Android标题栏布局内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间: 2022-01-12

Android自定义顶部标题栏

本文实例为大家分享了Android自定义顶部标题栏展示的具体代码,供大家参考,具体内容如下 思路及实现步骤 1.定义标题栏布局 2.自定义TitleActivity控制标题栏按钮监听 3.在TitleActivity中实现标题栏以下内容切换 首先定义标题栏 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android

Android组合控件自定义标题栏

本文实例为大家分享了Android简单的自定义标题栏,供大家参考,具体内容如下 android自定义控件向来都是开发者最头疼的,但是我们要有那种迎难而上的精神. MainActivity package com.example.customview; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import a

Android自定义简单的顶部标题栏

本文实例为大家分享了Android实现简单顶部标题栏的具体代码,供大家参考,具体内容如下 实现功能: 1)自定义View标题栏布局: 2)灵活的可以自己传入类型,选择所需要的控件来显示隐藏 3)相对于我之前写过的一篇,免继承,可直接在布局里使用 4)直接可以在布局控件里设置属性 老规矩,上几张效果图: 由效果图可见,这个是可以根据传入type来控制,比较灵活的 下面就来实现以下步骤,最后我会贴上源码 1.创建一个布局文件,命名,layout_titlebar,来部署我们的标题栏样式,可以自定义更

android开发去除标题栏的方法

1:新建一个项目运行起来,可以看到顶部一直有个标题栏看着不是很美观 2:有两种方法可以去除顶部标题栏 (1)将代码中AndroidManifest里android:theme="@style/Theme.MyApplication"改为android:theme="@style/Theme.AppCompat.NoActionBar"> <application android:allowBackup="true" android:i

Android 开发隐藏标题栏的方法总结

android 开发隐藏标题栏的方法总结 1. 推荐!(因为现在工程都默认的为AppTheme) 在value/styles.xml里面添加自定义属性 <resources xmlns:android="http://schemas.android.com/apk/res/android"> <!-- Application theme. --> <style name="AppTheme" parent="AppBaseTh

Android开发之动画实现方法

本文实例讲述了Android开发之动画实现方法.分享给大家供大家参考.具体分析如下: 动画分为三种: 逐帧动画.布局动画和控件动画 控件动画实现 通过重写Animation的 applyTransformation (float interpolatedTime, Transformation t)函数来实现自定义动画效果,另外一般也会实现 initialize (int width, int height, int parentWidth, int parentHeight)函数,这是一个回调

Android开发调用WebService的方法示例

本文实例讲述了Android开发调用WebService的方法.分享给大家供大家参考,具体如下: WebService是一种基于SOAP协议的远程调用标准,通过webservice可以将不同操作系统平台.不同语言.不同技术整合到一块.在Android SDK中并没有提供调用WebService的库,因此,需要使用第三方的SDK来调用WebService.PC版本的WEbservice客户端库非常丰富,例如Axis2,CXF等,但这些开发包对于Android系统过于庞大,也未必很容易移植到Andr

Android开发实现文件关联方法介绍

Android开发实现文件关联方法,做一个项目的时候,需要点击文件打开我们自己的app.首先讲一下点击普通文件打开app的方法,只需要三行代码,在app启动活动里加一个过滤器. <intent-filter> <category android:name="android.intent.category.LAUNCHER"> </category></action></intent-filter> <intent-fil

Android开发之注册登录方法示例

本文所述,继续上一篇关于Android端向服务器端发送数据的方法进一步完善注册登录的方法,由于版本问题出现一点瑕疵,今天经过调试已经解决,在这里给大家介绍一下. 在Android4.0以后版本的对于网络权限要求变得严格,致使上一篇所述的案例无法将数据发送到服务器端,当你一点击发送数据,Android控制台就会报错,错误当然是很让人头疼,基本上都是关于http的错误,所以可以肯定是Android虚拟机向服务器发送数据时出现了错误,经过一番检查与测试后才知道,4.0之后的版本,主线程中不允许调用网络

Android开发改变字体颜色方法

在TextView中添加文本时有时会改变一些文本字体的颜色,今天主要分享三种实现方法及相关优缺点. 1.通过html标签改变文本颜色 复制代码 代码如下: tv.setText(Html.fromHtml("我是<font color=blue>danyijiangnan</font>")); 点评:通过Html.fromHtml()方法就可以在字符串中使用html的标签,通过font标签可以改变字体的格式.麦子学院-国内最专业的IT在线教育平台. 2.在act

Android实现自定义标题栏的方法

本文要讲自己定义一个标题栏,能加事件.然后可以移值到不同的手机上,基本上不用改什么,调用也很简单 在layout文件夹下,新建一个XML.名字叫做layout_title_bar.xml然后来看看布局: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

Android开发实现去除bitmap无用白色边框的方法示例

本文实例讲述了Android开发实现去除bitmap无用白色边框的方法.分享给大家供大家参考,具体如下: 图示 如下图所示,之前介绍过Android Bitmap的用法,这里提供的工具类作用是,去除内容区域以外的白色边框. 代码 import android.graphics.Bitmap; /** * Created by Victor Yang on 2016/6/17. * 去除 bitmap 无用的白色边框 */ public class BitmapDeleteNoUseSpaceUt

Android开发之微信底部菜单栏实现的几种方法汇总

 实现方式 实现的方式有很多种 这里总结最常见的几种方式,以后再添加其他的. viewPager + RadioGroup viewPager + FragmentTabHost viewpager +TabLayout viewPager+RadioGroup 感觉这是最简单的一个了,我也就不贴代码 说说我理解的思路吧 通过给pager 和RadioGroup 添加监听,监听两个控件的变化 实现联动 当viewPager的显示pager改变就会触发监听 ,在监听中选中对应的RadioButto

Android开发实现图片平移、缩放、倒影及旋转功能的方法

本文实例讲述了Android开发实现图片平移.缩放.倒影及旋转功能的方法.分享给大家供大家参考,具体如下: 解析: 1)根据原来的图片创建新的图片 Bitmap modBm = Bitmap.createBitmap(bm.getWidth()+20, bm.getHeight()+20, bm.getConfig()); 2)设置到画布 Canvas canvas = new Canvas(modBm); 3)使用矩阵进行平移- Matrix matrix = new Matrix(); ma