`
zdphpn
  • 浏览: 11519 次
  • 性别: Icon_minigender_1
  • 来自: 邯郸市
社区版块
存档分类
最新评论

6、Dp Notes底部导航栏(自定义控件(View))

阅读更多
        已经看到了安卓的一角,正式开始Dp Notes开发工作。安卓开发一般是先有美工设计设计好界面,按照界面再布局(没正式开发过,不太清楚)。没有美工(美学,什么?),直接按自己想的来好了。

         主要实现一个底部的导航栏,一般软件底部都有导航栏,包含3-5项,点击时切换不同的页面。像微信,不止可以点,还可以滑动,而且滑动时导航栏图标还会有不同的变化,仿一下这个效果。图标颜色的的渐变,不可能有那么多张颜色不同的图片。不知道微信用的什么原理,这里用自定义View来实现一下(之前说过安卓很多控件的基类都是View,那定义一个类来继承View,实现想要的效果,就是自定义控件)。


注:后来做好截的图。

        工程名,右键新建一个包,包名右键新建一个类,名字QEndBar,Superclass选择View,确定。软件新建了一个QEndBar.java文件并已打开,但提示有错误,鼠标悬停,是因为没有一个构造方法(类初始化会调用,可以做一些变量的初始化),改正提示选择第二个(可以在xml中引用),加入构造方法。再引入一个重要的方法菜单Source→O/I Mothods→onDraw(Canvas):
public class QEndBar extends View {

	public QEndBar(Context context, AttributeSet attrs) {
		super(context, attrs);
		// TODO Auto-generated constructor stub
	}

	@Override
	protected void onDraw(Canvas canvas) {
		// TODO Auto-generated method stub
		super.onDraw(canvas);
	}

}

        onDraw(Canvas canvas),名字看就是画,View呈现在屏幕上的就是这里画上去的。Canvas就相当于一个画布(屏幕的一块区域)。可以调用Canvas的drawXXX(),绘制各种,如canvas.drawText("你好,世界!", 0, 0, paint);参数:文字,x坐标,y坐标,Paint(一个画笔,可以设置不同的字体,颜色,大小等)。定义一个Paint对象Paint paint,构造函数里初始化paint=new Paint():
public class QEndBar extends View {

	private Paint paint;

	public QEndBar(Context context, AttributeSet attrs) {
		super(context, attrs);
		// TODO Auto-generated constructor stub
		paint=new Paint();
		paint.setTextSize(50);
	}

	@Override
	protected void onDraw(Canvas canvas) {
		// TODO Auto-generated method stub
		canvas.drawText("你好,世界!", 50, 50, paint);
		super.onDraw(canvas);
	}

}

        类定义好了,在xml中引用,layout/activity_main.xml,引入,像普通控件一样(但要加入具体路径(包名))如:com.zdphpn.dpnotes.qview.QEndBar:
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#000000" >

    <com.zdphpn.dpnotes.qview.QEndBar
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_alignParentBottom="true"
        android:background="#FFFFFF" />
    

</RelativeLayout>

        预览可能显示不出效果(一般可以,复杂就不行了),运行,“你好,世界!”显示在屏幕下方白色区域内。怎么不在中间,强迫症,修改x,y坐标canvas.drawText("你好,世界!", getWidth()/2-50*3, getHeight()/2, paint),宽度/2-3个字,高度/2(其实不准确),查看效果。

注:屏幕下方显示你好,世界!,不同于TextView。

日积月累——2016/10/24




  • 大小: 160.4 KB
  • 大小: 142.1 KB
分享到:
评论

相关推荐

    底部导航栏控件BottomNavigationView的使用和修改样式

    在Android应用开发中,底部导航栏(BottomNavigationView)是一个常用组件,它允许用户在多个顶层导航之间进行切换,通常位于屏幕底部。这个控件在Android Design Support Library中提供,可以帮助开发者实现符合...

    z自定义控件uc导航栏

    "z自定义控件uc导航栏"这个主题聚焦于创建一个特定的自定义控件,即用于实现类似UC浏览器底部的导航栏。UC浏览器的底部导航条通常包含多个图标按钮,用于在应用的不同页面间切换,提供便捷的用户操作。 自定义控件...

    自定义实现底部导航栏(底部Tab)

    总的来说,自定义Android的底部导航栏需要理解`BottomNavigationView`的工作原理,以及如何通过样式、菜单、事件监听和动画来实现特定的设计需求。在实现中间凸起的效果时,关键在于创建适当的背景图层和调整选中...

    Android 自定义控件简单Demo

    在Android开发中,自定义控件是提升应用独特性和用户体验的重要手段。本示例"Android 自定义控件简单Demo"将向我们展示如何创建一个结合图片和文字的自定义控件,这通常用于构建定制化的按钮、标签或其他UI元素。...

    Android简单实现自定义控件

    在Android开发中,自定义控件是提升应用独特性和用户体验的有效方式。本教程将引导初学者如何简单地创建一个自定义控件,该控件基于`LinearLayout`进行扩展。通过这个过程,我们可以深入理解Android UI组件的工作...

    Android 消息提示 小红点 自定义控件

    在Android应用开发中,消息提示...这个控件不仅可以应用于主界面顶部通知栏,也可以应用于各个需要提示新消息的场景,如导航栏、菜单项等。通过这种方式,开发者可以根据应用程序的需求定制化提示方式,提高用户体验。

    android自定义控件及其属性设置

    在Android开发中,自定义控件是提升应用独特性和用户体验的重要手段。自定义控件允许开发者根据需求扩展标准Android组件,实现独特的交互效果和视觉样式。本教程将深入探讨如何在Android中创建自定义控件及其属性...

    安卓自定义控件相关-Android屏幕自适应Demo.rar

    在Android开发中,自定义控件是提升应用用户体验和界面独特性的重要手段。"安卓自定义控件相关-Android屏幕自适应Demo"这个压缩包文件提供了关于如何在Android平台上创建自定义控件以及实现屏幕自适应的示例。下面将...

    xamarin fragment底部导航栏

    1. **布局设计**:在布局XML文件中,为底部导航栏添加一个`BottomNavigationView`组件。例如: ```xml &lt;com.google.android.material.bottomnavigation.BottomNavigationView android:id="@+id/bottom_navigation" ...

    fragment底部导航栏

    可以使用`BottomNavigationView`作为底部导航栏组件,它提供了现成的样式和事件监听。 ```xml &lt;!-- activity_main.xml --&gt; android:id="@+id/fragment_container" android:layout_width="match_parent" ...

    Android底部导航栏实现

    为了使底部导航栏符合应用的整体风格,我们可以在主题中定义`BottomNavigationView`的样式。在`styles.xml`中,可以设置颜色、字体大小等属性。 以上就是实现Android底部导航栏的基本流程。在这个“Android底部导航...

    图片+文字自定义控件的实现

    在Android开发中,自定义控件是提升用户体验和界面独特性的重要手段。本文将深入探讨如何利用Gallery组件来实现一个图片加文字的自定义控件。Gallery是一个Android提供的水平滚动视图,通常用于展示一系列的图片,...

    自定义控件-TitleBar

    自定义控件TitleBar可以让开发者根据需求自由设计样式和功能,提升应用的用户体验。本文将深入探讨如何在Android中创建一个自定义的TitleBar控件,并结合文件`CommCircleView`来实现一个特定的功能。 首先,我们来...

    Android完全自定义控件

    6. 使用自定义控件:在布局XML文件中,引入自定义控件并设置属性。例如: ```xml android:layout_width="wrap_content" android:layout_height="wrap_content" app:toggleColor="@color/colorAccent" app:...

    自定义控件源码.zip

    6. 使用自定义控件:最后,将自定义控件添加到项目的布局文件中,或者在代码中动态创建并添加到视图树。 三、自定义控件的进阶技巧 1. 优化性能:合理使用硬件加速,避免在onDraw()方法中执行复杂计算,利用Canvas...

    自定义控件与属性

    在Android中,自定义控件通常基于已有的View或 ViewGroup进行扩展。通过继承一个基础类,我们可以覆盖或添加新的方法来实现特定的功能。例如,如果我们要创建一个带圆角的Button,可以这样开始: ```java public ...

    Android自定义控件 AddAndSubView【第二版】EditText输入框两边加减按钮Button Demo

    在Android开发中,自定义控件是提升应用用户体验和界面设计独特性的重要手段。本教程主要探讨如何创建一个自定义的EditText控件,该控件在其两侧分别带有加号(+)和减号(-)的按钮,允许用户通过点击按钮增加或...

    Android 自定义控件之圆形扩散View(DiffuseView).zip

    6. **生命周期管理**:在自定义控件中,我们还需要考虑其生命周期,确保在适当的时候开始、暂停或结束动画。 接下来,我们来看具体实现步骤: 1. **创建新类**:创建一个继承自`View`的Java类,例如`DiffuseView`...

    RadioButton 底部导航栏

    - 底部导航栏应确保在不同分辨率和屏幕尺寸的设备上都能正确显示,可以使用dp单位和百分比布局来实现响应式设计。 10. **无障碍功能**: - 为了满足无障碍需求,确保RadioButton具有合适的accessibility labels和...

    android自定义控件文档

    ### Android自定义控件知识点详解 #### 一、引言 在Android开发过程中,系统提供的标准控件往往能够满足大部分的界面设计需求。然而,在某些特定场景下,开发者可能需要更加个性化、定制化的用户界面元素来实现...

Global site tag (gtag.js) - Google Analytics