`
bcyy
  • 浏览: 1885911 次
文章分类
社区版块
存档分类
最新评论

Android开发之自定义View(视图)

 
阅读更多

View类是Android的一个超类,这个类几乎包含了所有的屏幕类型。每一个View都有一个用于绘图的画布,这个画布可以进行任意扩展。在游戏开发中往往需要自定义视图(View),这个画布的功能更能满足我们在游戏开发中的需要。在Android中,任何一个View类都只需重写onDraw 方法来实现界面显示,自定义的视图可以是复杂的3D实现,也可以是非常简单的文本形式等。

为了实现自定义View,需要创建一个新的类,然后重写onDraw方法,在此需要注意,新创建的类MyView要继承View基类,同时还要加入有参数的两个构造方法MyView(Context context)和MyView(Contextcontext,AttributeSet attr),否则编译运行无法通过。

在onDraw方法中,初始化了一个画笔对象myPaint,设置画笔颜色,还有文字大小,填充等属性。再利用本方法传入的参数canvas画布完成一幅条形统计图的绘制。具体代码如下:

  1. packagecom.viewTest;
  2. importandroid.content.Context;
  3. importandroid.graphics.Canvas;
  4. importandroid.graphics.Color;
  5. importandroid.graphics.Paint;
  6. importandroid.graphics.Rect;
  7. importandroid.graphics.Paint.Style;
  8. importandroid.util.AttributeSet;
  9. importandroid.view.View;
  10. publicclassMyViewextendsView{
  11. publicMyView(Contextcontext){
  12. super(context);
  13. //TODOAuto-generatedconstructorstub
  14. }
  15. publicMyView(Contextcontext,AttributeSetattr){
  16. super(context,attr);
  17. }
  18. privatePaintmyPaint;
  19. privatestaticfinalStringmyString1="2006-2011上半年中国移动互联网行业各年度投资情况";
  20. privatestaticfinalStringmyString2="来源:清科研究中心2011.08";
  21. @Override
  22. protectedvoidonDraw(Canvascanvas){
  23. //TODOAuto-generatedmethodstub
  24. super.onDraw(canvas);
  25. myPaint=newPaint();
  26. //绘制标题
  27. myPaint.setColor(Color.BLACK);//设置画笔颜色
  28. myPaint.setTextSize(18);//设置文字大小
  29. canvas.drawText(myString1,20,20,myPaint);
  30. //绘制坐标轴
  31. canvas.drawLine(50,100,50,500,myPaint);//纵坐标轴
  32. canvas.drawLine(50,500,400,500,myPaint);//横坐标轴
  33. int[]array1=newint[]{0,50,100,150,200,250,300,350};
  34. //绘制纵坐标刻度
  35. myPaint.setTextSize(10);//设置文字大小
  36. canvas.drawText("单位:百万美元",20,90,myPaint);
  37. for(inti=0;i<array1.length;i++){
  38. canvas.drawLine(50,500-array1[i],54,500-array1[i],myPaint);
  39. canvas.drawText(array1[i]+"",20,500-array1[i],myPaint);
  40. }
  41. //绘制横坐标文字
  42. String[]array2=newString[]{"2008年","2009年","2010年","2011上半年"};
  43. for(inti=0;i<array2.length;i++){
  44. canvas.drawText(array2[i],array1[i]+80,520,myPaint);
  45. }
  46. //绘制条形图
  47. myPaint.setColor(Color.BLUE);//设置画笔颜色
  48. myPaint.setStyle(Style.FILL);//设置填充
  49. canvas.drawRect(newRect(90,500-56,110,500),myPaint);//画一个矩形,前两个参数是矩形左上角坐标,后两个参数是右下角坐标
  50. canvas.drawRect(newRect(140,500-98,160,500),myPaint);//第二个矩形
  51. canvas.drawRect(newRect(190,500-207,210,500),myPaint);//第三个矩形
  52. canvas.drawRect(newRect(240,500-318,260,500),myPaint);//第四个矩形
  53. myPaint.setColor(Color.BLACK);//设置画笔颜色
  54. canvas.drawText("56.32",88,500-58,myPaint);//第一个矩形的数字说明
  55. canvas.drawText("98.00",138,500-100,myPaint);
  56. canvas.drawText("207.65",188,500-209,myPaint);
  57. canvas.drawText("318.30",238,500-320,myPaint);
  58. //绘制出处
  59. myPaint.setColor(Color.BLACK);//设置画笔颜色
  60. myPaint.setTextSize(16);//设置文字大小
  61. canvas.drawText(myString2,20,560,myPaint);
  62. }
  63. }



然后将我们自定义的View 加入到main.xml 布局文件中, 在这里设置View的背景色为白色,是为了更好地展现其中的内容。代码如下:

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:orientation="vertical">
  6. <TextView
  7. android:layout_width="fill_parent"
  8. android:layout_height="wrap_content"
  9. android:text="@string/hello"/>
  10. <Button
  11. android:layout_width="match_parent"
  12. android:layout_height="40dip"
  13. android:text="下一张图"/>
  14. <com.viewTest.MyView
  15. android:layout_width="fill_parent"
  16. android:layout_height="wrap_content"
  17. android:background="#FFFFFF"/>
  18. </LinearLayout>

初始的activity.java文件并不需要修改。最后的效果如下图所示:



分享到:
评论

相关推荐

    Android 自定义View视图

    在Android应用开发中,自定义View视图是一个重要的技术,它允许开发者根据特定需求创建独一无二的用户界面元素。本文将深入探讨如何通过继承View类来实现一个自定义的罗盘界面,以帮助开发者理解自定义视图的工作...

    Android开发之自定义ViewPager三角形指示器

    这个"Android开发之自定义ViewPager三角形指示器"项目旨在创建一个简单、轻量级的指示器,它用三角形图形表示用户当前所处的页面。 首先,我们来理解ViewPager的基本概念。ViewPager是Android Support Library中的...

    android 自定义view比较综合的例子

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求创建独特且功能丰富的用户界面。这个“android 自定义view比较综合的例子”显然涵盖了多个高级话题,旨在帮助有一定基础的开发者提升自定义...

    Android开发之自定义View(视图)用法详解

    本文实例讲述了Android开发之自定义View(视图)用法。分享给大家供大家参考,具体如下: View类是Android的一个超类,这个类几乎包含了所有的屏幕类型。每一个View都有一个用于绘图的画布,这个画布可以进行任意扩展...

    Android-Android开发之自定义View的功能实现详解。教你一步一步学会自定义View

    在Android应用开发中,自定义View是提升用户体验和实现独特设计的重要手段。本文将深入探讨如何在Android中创建自定义View,以及实现其各种功能。首先,我们需要理解自定义View的基本概念,它允许开发者扩展系统提供...

    android自定义view自定义buttonDemo

    首先,自定义View在Android开发中扮演着关键角色,它允许开发者超越系统提供的标准视图组件,创建出满足特定需求的复杂视图。自定义View通常包括以下步骤: 1. 创建一个新的Java类,继承自View或已有的View子类(如...

    android开发随声音大小变化的自定义view

    在Android开发中,创建一个能够随声音大小变化的自定义View是一种常见的需求,尤其是在音乐播放器或者音频相关的应用中。这个自定义View可以是长方形或圆柱形,旨在模仿音频波形或音量指示器的效果。下面我们将深入...

    Android 创建自定义View源码

    本教程将深入探讨Android自定义View的源码实现过程,旨在帮助开发者理解和掌握这一核心技能。 首先,了解自定义View的基本步骤: 1. **定义View类**:创建一个新的Java类,继承自`android.view.View`或其子类,如`...

    Android-Android自定义View有这些足够了

    本文将深入探讨“Android-Android自定义View有这些足够了”这一主题,旨在帮助你掌握自定义Android View的核心技术,成为一名真正的Android UI专家。 首先,理解Android View的基本结构至关重要。一个View通常由两...

    Android开发-自定义View-AndroidStudio(二十六)数独(3)Dialog监听

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据需求创建独特的用户界面元素,提升应用的用户体验。本教程将聚焦于如何在Android Studio中实现一个自定义View,特别是涉及数独游戏的Dialog监听部分...

    Android 自定义View (四) 视频音量调控

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求创建独特且功能丰富的用户界面。本教程将深入探讨如何实现一个自定义的音量调控View,以提供更直观、更个性化的音量控制体验。我们参考的...

    Android音频剪辑裁剪自定义view

    总结起来,实现Android音频剪辑裁剪自定义View的关键在于理解音频处理、自定义视图绘制以及用户交互设计。通过结合Android系统提供的API和第三方库,我们可以创建一个功能完备且用户体验良好的音频剪辑工具。在实际...

    android 自定义view大全,非常好用

    综上所述,这个资源包对于想要提升Android自定义View能力的开发者来说,是一份宝贵的资料。通过学习和实践其中的代码,开发者不仅可以掌握自定义View的基本技巧,还能深入了解Android视图系统的底层运作,提升应用的...

    Android中自定义视图View

    自定义View的基本步骤: 1. **创建新类**:首先,你需要创建一个新的Java类,继承自Android的基础视图类,如`View`、`ViewGroup`或其子类。例如,你可以创建一个名为`MyCustomView`的类,并让它直接继承自`View`。 ...

    android自定义veiw——波浪线

    本文将围绕“android自定义view——波浪线”这一主题,深入探讨如何实现这样的自定义组件。 首先,我们了解自定义View的基本步骤。创建一个自定义View通常需要继承自Android的View或其子类,如ViewGroup。在这个...

    android demo,自定义控件view,点击该自定义view,onclick随机生成数字

    自定义View是Android开发中常见的需求,它允许开发者扩展Android系统的内置视图,以满足特定的界面设计或交互需求。创建自定义View通常包括以下步骤: - 创建一个新的Java类,继承自`View`或`ViewGroup`。 - 重写...

    Android中自定义View

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据需求创建独特的用户界面元素,以实现更加丰富和个性化的交互体验。自定义View通常涉及到绘制、事件处理、动画以及性能优化等多个方面。下面我们将...

    Android自定义view——组合控件

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求创建独特的用户界面元素。本主题将深入探讨如何在Android中实现自定义组合控件,即利用多个基础控件构建一个具有特殊功能或样式的复合视图。...

    android 自定义view及自定义属性

    在Android开发中,自定义View和自定义属性是提升应用个性化和功能扩展性的重要手段。本文将深入探讨这两个核心概念,以及如何在实际项目中应用它们。 ### 自定义View 自定义View允许开发者创建自己的视图组件,以...

Global site tag (gtag.js) - Google Analytics