- 浏览: 11449 次
- 性别:
- 来自: 邯郸市
文章分类
最新评论
完成了底部导航栏,再来顶部导航栏(叫什么?菜单栏?有脚没头显得不协调)。软件顶部默认是有一个ActionBar,为了使各自顶部的事件处理放到各自的Fragment中,将顶部自带的ActionBar给去掉(res/values下styles.xml中把style改为一个带.NoTitleBar的Theme即可),自己加一块布局在上面,一个假的ActionBar。布局内容左侧一个TextView,显示当前页名字(主页、列表、消息、我的),右侧一个搜索或刷新的图标。
先来,主页,新建布局文件header_home.xml,布局较简单:
左侧LinearLayout水平,包含“首页”和一个展开的图标,右侧LinearLayout包含一个刷新的图标,图标,字体大小,边距根据情况设定。ImageView有个属性android:tint,可以设置纯色图标的颜色(如,下载的图标是黑色的,不用PS成想要的颜色,android:tint设置想要的颜色即可)。为什么都用LinearLayout包含 ,之后说。
fragment_home.xml中引用header_home.xml,如下:
<include的使用,layout即为要引入的布局。下面给了一条线。
类似,将其他fragment加上header,运行。
注:这是一个.gif动图,ctrl点击图片查看。
想让顶部的图标点击实现和底部一样的效果,想用animation(安卓自带的一种动画实现方法)来实现,发现并不容易(实现不了?不会。)。决定还是用自定义View来实现。不同于底部的QendBar,这次继承自LinearLayout,方法还是和底部的QendBar类似。新建一个类,继承自LinearLayout,取名QLinearLayout,还是获取一下长宽,触摸事件中设置一些标志,onDraw中画圆,不在啰嗦。遇到点问题,onMeasure获取长宽没问题,onTouchEvent处理触摸事件也没问题(注意return super.onTouchEvent(ev),否则会影响正常当LinearLayout使用时的点击事件等)onDraw有点问题,画的东西显示不了,百度了下,说ViewGroup(LinearLayout继承自ViewGroup)要使用dispatchDraw,改为dispatchDraw,正常。
把需要实现点击效果的LinearLayout改为QLinearLayout(写完整com.zdphpn.dpnotes.qview. QLinearLayout),代码里不添加点击事件想看出点击效果xml中加上android:clickable="true"。
注:这是一个.gif动图,ctrl点击图片查看。
先来,主页,新建布局文件header_home.xml,布局较简单:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="@dimen/header_h" android:background="@color/white_dark" > <LinearLayout android:layout_width="@dimen/item_w_l" android:layout_height="match_parent" android:gravity="center_vertical|left" android:orientation="horizontal" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/margin_ll" android:text="首页" android:textColor="@color/app_theme" android:textSize="@dimen/header_h_3" /> <ImageView android:layout_width="@dimen/header_h_2" android:layout_height="@dimen/header_h_2" android:src="@drawable/launch" android:tint="@color/app_theme" /> </LinearLayout> <LinearLayout android:layout_width="@dimen/item_w_s" android:layout_height="match_parent" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:gravity="center_vertical|right" android:orientation="horizontal" > <ImageView android:layout_width="@dimen/header_h_2" android:layout_height="@dimen/header_h_2" android:layout_marginRight="@dimen/margin_ll" android:src="@drawable/refresh" android:tint="@color/app_theme" /> </LinearLayout> </RelativeLayout>
左侧LinearLayout水平,包含“首页”和一个展开的图标,右侧LinearLayout包含一个刷新的图标,图标,字体大小,边距根据情况设定。ImageView有个属性android:tint,可以设置纯色图标的颜色(如,下载的图标是黑色的,不用PS成想要的颜色,android:tint设置想要的颜色即可)。为什么都用LinearLayout包含 ,之后说。
fragment_home.xml中引用header_home.xml,如下:
<include android:id="@+id/header_home" android:layout_width="match_parent" android:layout_height="@dimen/header_h" android:layout_alignParentTop="true" layout="@layout/header_home" /> <View android:layout_width="match_parent" android:layout_height="0.5dp" android:layout_below="@+id/header_home" android:background="@color/gray_dark_88"/>
<include的使用,layout即为要引入的布局。下面给了一条线。
类似,将其他fragment加上header,运行。
注:这是一个.gif动图,ctrl点击图片查看。
想让顶部的图标点击实现和底部一样的效果,想用animation(安卓自带的一种动画实现方法)来实现,发现并不容易(实现不了?不会。)。决定还是用自定义View来实现。不同于底部的QendBar,这次继承自LinearLayout,方法还是和底部的QendBar类似。新建一个类,继承自LinearLayout,取名QLinearLayout,还是获取一下长宽,触摸事件中设置一些标志,onDraw中画圆,不在啰嗦。遇到点问题,onMeasure获取长宽没问题,onTouchEvent处理触摸事件也没问题(注意return super.onTouchEvent(ev),否则会影响正常当LinearLayout使用时的点击事件等)onDraw有点问题,画的东西显示不了,百度了下,说ViewGroup(LinearLayout继承自ViewGroup)要使用dispatchDraw,改为dispatchDraw,正常。
private int widthAll,heightAll; //总宽度,总高度 boolean isDown,isUp,isMax; //状态 float radius=0;//半径 private int colorItemDown; //几个颜色值 private Paint paintOther; //画笔 public QLinearLayout(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub colorItemDown=getResources().getColor(R.color.black_normal_22); paintOther=new Paint(); paintOther.setAntiAlias(true); } @Override protected void dispatchDraw(Canvas canvas) { // TODO Auto-generated method stub super.dispatchDraw(canvas); if(widthAll<=0||heightAll<=0){ widthAll=getWidth();//获取宽度 heightAll=getHeight();//获取高度 if(widthAll>0&&heightAll>0){ ; } else{ postInvalidate(); } } paintOther.setColor(colorItemDown); int alpha=colorItemDown>>24; paintOther.setAlpha((int)(alpha*radius/widthAll*2)); if(isDown){ if(radius<widthAll/2){ canvas.drawCircle(widthAll/2, heightAll/2, radius, paintOther); radius+=widthAll/4/10; postInvalidateDelayed(10); } else{ isMax=true; canvas.drawCircle(widthAll/2, heightAll/2, radius, paintOther); } } else if(isUp){ if(!isMax){ canvas.drawCircle(widthAll/2, heightAll/2, radius, paintOther); radius+=widthAll/4/5; postInvalidateDelayed(5); if(radius<widthAll/2){ isMax=false; } else{ isMax=true; } } else{ if(radius>widthAll/3){ canvas.drawCircle(widthAll/2, heightAll/2, radius, paintOther); radius-=widthAll/4/5; postInvalidateDelayed(10); } else{ isUp=false; isMax=false; postInvalidateDelayed(10); } } } } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { // TODO Auto-generated method stub widthAll=getWidth();//获取宽度 heightAll=getHeight();//获取高度 if(widthAll>0&&heightAll>0){ ; } else{ postInvalidate(); } super.onMeasure(widthMeasureSpec, heightMeasureSpec); } @Override public boolean onTouchEvent(MotionEvent ev) { // TODO Auto-generated method stub switch(ev.getAction()){ case MotionEvent.ACTION_DOWN: isDown=true; radius=widthAll/3; isUp=false; break; case MotionEvent.ACTION_UP: isDown=false; isUp=true; break; default: break; } postInvalidate(); return super.onTouchEvent(ev); }
把需要实现点击效果的LinearLayout改为QLinearLayout(写完整com.zdphpn.dpnotes.qview. QLinearLayout),代码里不添加点击事件想看出点击效果xml中加上android:clickable="true"。
注:这是一个.gif动图,ctrl点击图片查看。
不忘初心——2016/10/31
发表评论
-
20、长图的加载显示
2017-06-18 16:24 582有时候图片很长,预览只是其一部分,有个类似按钮 ... -
19、GIF动图显示
2017-06-18 16:28 828有时候需要显示动图,可安卓有没有现成的控件,很 ... -
18、ListView显示图片
2017-06-18 16:23 507ListView显示 ... -
17、网络图片加载
2017-06-17 20:57 434如上节,有时候需要显示网络图片,QListVi ... -
15、ListView Item设置
2017-06-17 20:52 503当然想要ListView显示自定义的布局,显示 ... -
16、后台异步处理
2017-06-17 20:56 662大多时候,需要后台(异步)去执行一些费时操作。 ... -
14、自定义ListView
2017-06-13 22:05 713实现了显示的效果,接着来实现一些监听器(接口) ... -
13、自定义ListView
2017-06-13 21:58 539下拉刷新,上拉加载,很流行的啊,总的来说有两种 ... -
12、Dp Notes内容-列表(ListView使用)
2017-06-12 22:48 499完成了一些空架子,开始填内容,从列表开始吧(主 ... -
10、Dp Notes底部导航栏
2017-06-10 11:48 548有卡顿的现象(可能模拟器原因),滑动时没有渐变 ... -
9、Dp Notes底部导航栏
2017-06-10 11:41 545将ViewPager和QEndBar结合起来, ... -
8、Dp Notes底部导航栏
2017-06-07 21:59 642实现了点击切换效果(只是图标状态变化),如何结 ... -
7、Dp Notes底部导航栏
2017-06-07 21:58 570想要的图标呢?怎么弄上去。从网上找了几个图标, ... -
6、Dp Notes底部导航栏(自定义控件(View))
2017-06-05 21:40 623已经看到了安卓的一角,正式开始Dp Notes ... -
5、控件美化(drawable使用)
2017-06-04 11:19 661先前的回复页面虽然搭好了,功能也实现了,但页面 ... -
4、第一行代码
2017-06-03 09:12 655上节完成了回复功能的页面搭建,可是想要的功能并 ... -
3、基本控件
2017-06-03 09:01 541控件,很好 ... -
2、你好,世界
2017-06-01 20:23 488开发一个安 ... -
1、初衷
2017-05-31 21:18 386接触安卓已经有一段时间了,从一开始接触J2M ...
相关推荐
超微 X11DPG-OT-CPU主板用户手册
### 超微 X11DPG-QT 主板用户手册关键知识点解析 #### 一、产品概述 **超微 X11DPG-QT** 是一款由 **Super Micro Computer, Inc.**(以下简称“Supermicro”)设计并制造的专业级服务器主板。此主板面向对性能、...
【ViewPager顶部导航栏联动效果】是指在Android应用开发中,使用ViewPager与TabLayout结合实现的交互功能。ViewPager通常用于展示多个页面,而顶部导航栏(TabLayout)则用于指示当前显示的页面。当用户在ViewPager...
IPD11DP10NM INFINEON 英飞凌 电子元器件芯片
标题"DP-DP-Koppler_Rel3_www.44dpdp.com_www.44dpdp.con_EC1-DEB-DPM_GSD"中提到的"DP-DP-Koppler"可能指的是一个特定的软件或系统开发项目,其中"DP"可能是项目代号或者代表“Data Processing”的缩写,而"Koppler...
### FCS_Notes_MC9S12DP256B:自适应控制、模糊控制、预测控制、神经网络控制、专家智能控制 #### 一、概述 本文档旨在详细介绍Freescale公司的MC9S12DP256B微控制器(MCU)及其在自适应控制、模糊控制、预测控制、...
"z自定义控件uc导航栏"这个主题聚焦于创建一个特定的自定义控件,即用于实现类似UC浏览器底部的导航栏。UC浏览器的底部导航条通常包含多个图标按钮,用于在应用的不同页面间切换,提供便捷的用户操作。 自定义控件...
DisplayPort(DP)1.4标准是视频电子标准协会(VESA)发布的一种高级数字接口规范,用于在显示设备和视频源之间传输未压缩的音频和视频数据。DP1.4标准是DP接口的一个重要升级,它在DP1.3的基础上引入了多项技术创新...
区间DP概率DP树形DP插头DP,每种DP一道典型例题,有助于初学者
在Android应用开发中,用户界面的设计是至关重要的,其中导航栏作为用户操作的主要入口,它的设计和实现方式直接影响到用户体验。本主题将深入探讨“Android个性化中间定位导航栏”的实现,这一特性允许开发者为自己...
在Android应用开发中,底部导航栏(Bottom Navigation Bar)是一种常见的用户界面元素,它允许用户在应用的几个主要功能之间快速切换。这个“Android底部导航栏实现”项目提供了一个简单的试用版本,适用于普通应用...
在Android应用开发中,底部导航栏(Bottom Navigation Bar)是一种常见的设计模式,它允许用户在应用的多个顶级视图之间快速切换。Fragment是Android SDK提供的一种组件,它可以帮助开发者构建可重用的UI块,非常...
首先,顶部工具栏(通常称为ActionBar或Toolbar)在安卓应用中扮演着导航和展示关键操作的角色。它是Android设计指南中重要的组件之一,用于提供应用的标识、主要操作以及导航选项。在Android SDK中,可以通过`...
在Android应用开发中,创建一个用户友好的界面是至关重要的,尤其当涉及到界面滑动和导航栏同步操作时。这个“Android界面滑动,导航栏同步滑动”的项目就是一个很好的学习资源,它提供了清晰易懂的示例代码,旨在...
西门子DP耦合器(DP-DP Koppler)是西门子S7-300和S7-400系列PLC系统中的一个重要组件,用于实现PROFIBUS DP现场总线网络中的主站与主站或者主站与从站之间的通信连接。GDS(Generic Device Services)文件则是这种...
在Android开发中,创建一个仿网易顶部导航栏的效果是一个常见的需求,这可以帮助用户在有限的屏幕空间内浏览更多的内容。本篇文章将详细讲解如何实现这一功能,并关注在处理内存限制时避免内存溢出的问题。 首先,...
DP1.4标准——VESA Proposed DisplayPort (DP) Standard 标题:DP1.4标准——VESA Proposed DisplayPort (DP) Standard 描述:该文档定义了一个灵活的系统和设备,能够在Source设备和Sink设备之间通过数字通信接口...
西门子DP(Decentralized Periphery)是西门子S7系列PLC中的一个分布式I/O系统,它是SIMATIC自动化系统的一个重要组成部分。DP系统允许用户将输入/输出模块分布在网络的不同节点上,以适应复杂的工业现场环境,提高...
在Android应用开发中,自定义顶部标题栏是一个常见的需求,它可以提供独特的用户界面风格和功能。下面我们将深入探讨如何在Android项目中实现自定义标题栏,包括定义标题栏布局、自定义TitleActivity以及实现在标题...
`dx`和`dp`(Density-independent Pixels)是Android系统中处理像素单位的关键概念,它们对于创建跨设备一致的用户体验至关重要。本文将详细探讨`dx`、`dp`以及如何在像素和`dp`之间进行转换。 `dp`,全称为密度...