`
huangsen1101
  • 浏览: 21966 次
  • 性别: Icon_minigender_1
  • 来自: 福州
文章分类
社区版块
存档分类
最新评论

android view的用法

阅读更多
范例程序
   主程序中继承自Android.view.View的 MyView类,重写 MyView的onDraw()方法,一开始就会运行绘制的工作,在onDraw()中以Paint将几何图形绘制在Canvas上,以paint.setColor() 改变图形颜色、以 paint.setStyle()的设置来控制画出的的图形是空心还是实心。程序的最后一段,就是直接在Canvas写上文字,随着Paint对象里的属性设置,也会有不同的外观模式。

package com.graphics;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.graphics.Path;
import android.graphics.Shader;
import android.graphics.LinearGradient;
public class GraphicesActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        /*设置ContentView为自定义的MyVieW*/
        MyView myView=new MyView(this);
        setContentView(myView);
    }
    /* 自定义继承View 的MyView*/
private class MyView extends View
{
     public MyView(Context context){
        super(context) ;
     }
     /*重写onDraw()*/
     @Override
     protected void onDraw(Canvas canvas)
     {  
         super.onDraw(canvas);
         /*设置背景为白色*/
         canvas.drawColor(Color.WHITE);
          Paint paint=new Paint();
          /*去锯齿*/
          paint.setAntiAlias(true);
          /*设置paint的颜色*/
          paint.setColor(Color.RED);
          /*设置paint的 style 为STROKE:空心*/
          paint.setStyle(Paint.Style.STROKE);
          /*设置paint的外框宽度*/
          paint.setStrokeWidth(3);
          /*画一个空心圆形*/
          canvas.drawCircle(40, 40, 30, paint);
          /*画一个空心正方形*/
          canvas.drawRect(10, 90, 70, 150, paint);
          /*画一个空心长方形*/
          canvas.drawRect(10, 170, 70,200, paint);
          /*画一个空心椭圆形*/
          RectF re=new RectF(10,220,70,250);
          canvas.drawOval(re, paint);
          /*画一个空心三角形*/
          Path path=new Path();
          path.moveTo(10, 330);
          path.lineTo(70,330);
          path.lineTo(40,270);
          path.close();
          canvas.drawPath(path, paint);
          /*画一个空心梯形*/
          Path path1=new Path();
          path1.moveTo(10, 410);
          path1.lineTo(70,410);
          path1.lineTo(55,350);
          path1.lineTo(25, 350);
          path1.close();
          canvas.drawPath(path1, paint);
         
          /*设置paint 的style为 FILL:实心*/
          paint.setStyle(Paint.Style.FILL);
          /*设置paint的颜色*/
          paint.setColor(Color.BLUE);
          /*画一个实心圆*/
          canvas.drawCircle(120,40,30, paint);
          /*画一个实心正方形*/
          canvas.drawRect(90, 90, 150, 150, paint);
          /*画一个实心长方形*/
          canvas.drawRect(90, 170, 150,200, paint);
          /*画一个实心椭圆*/
          RectF re2=new RectF(90,220,150,250);
          canvas.drawOval(re2, paint);
          /*画一个实心三角形*/
          Path path2=new Path();
          path2.moveTo(90, 330);
          path2.lineTo(150,330);
          path2.lineTo(120,270);
          path2.close();
          canvas.drawPath(path2, paint);
          /*画一个实心梯形*/
          Path path3=new Path();
          path3.moveTo(90, 410);
          path3.lineTo(150,410);
          path3.lineTo(135,350);
          path3.lineTo(105, 350);
          path3.close();
          canvas.drawPath(path3, paint);
          /*设置渐变色*/
          Shader mShader=new LinearGradient(0,0,100,100,
                  new int[]{Color.RED,Color.GREEN,Color.BLUE,Color.YELLOW},
                  null,Shader.TileMode.REPEAT);
          paint.setShader(mShader);
       
          /*画一个渐变色圆*/
          canvas.drawCircle(200,40,30, paint);
          /*画一个渐变色正方形*/
          canvas.drawRect(170, 90, 230, 150, paint);
          /*画一个渐变色长方形*/
          canvas.drawRect(170, 170, 230,200, paint);
          /*画一个渐变色椭圆*/
          RectF re3=new RectF(170,220,230,250);
          canvas.drawOval(re3, paint);
          /*画一个渐变色三角形*/
          Path path4=new Path();
          path4.moveTo(170,330);
          path4.lineTo(230,330);
          path4.lineTo(200,270);
          path4.close();
          canvas.drawPath(path4, paint);
          /*画一个渐变色梯形*/
          Path path5=new Path();
          path5.moveTo(170, 410);
          path5.lineTo(230,410);
          path5.lineTo(215,350);
          path5.lineTo(185, 350);
          path5.close();
          canvas.drawPath(path5, paint);
         
          /*写字*/
          paint.setTextSize(24);
          canvas.drawText(getResources().getString(R.string.str_text1), 240, 50, paint);
          canvas.drawText(getResources().getString(R.string.str_text2), 240, 120, paint);
          canvas.drawText(getResources().getString(R.string.str_text3), 240, 190, paint);
          canvas.drawText(getResources().getString(R.string.str_text4), 240, 250, paint);
          canvas.drawText(getResources().getString(R.string.str_text5), 240, 320, paint);
          canvas.drawText(getResources().getString(R.string.str_text6), 240, 390, paint); 
     }
}
}


转自:http://bbs.elecfans.com/jishu_162260_1_1.html
分享到:
评论

相关推荐

    android view的旋转

    首先,Android中的View旋转主要通过`setRotation()`、`setRotationX()`和`setRotationY()`这三个方法来实现。它们分别控制View的整体旋转、沿X轴的旋转和沿Y轴的旋转。这些方法都会影响到View的Matrix,Matrix是...

    Android-一个方便为AndroidView添加自然的阴影的库

    在Android原生API中,虽然可以使用`CardView`或`Elevation`属性为视图添加阴影,但这些方法在某些设备或API级别上可能效果不佳,尤其是在Android 5.0(Lollipop)以下的版本。`zhengcx-ShadowHelper`库则解决了这个...

    android获取根View的方法

    以下将详细阐述Android中获取根View的方法以及其应用场景。 一、通过findViewById()方法获取 这是最常见的方式,通常在Activity的onCreate()方法中执行。首先需要确保已经调用了setContentView()方法来设置布局...

    Compose 和 Android 传统View 互相调用 示例 Demo

    Compose 和 Android 传统View 互相调用 示例 Demo Sample,以及在双层嵌套(原生View嵌套Compose,Compose中又嵌套原生View)的情况下,在最外层原生View中,怎么获取到Compose内部的原生View。 具体详见我的博客 : ...

    Android view构造方法第3个参数详解 demo

    了解View的构造方法及其参数对于优化布局加载和理解Android系统的工作原理至关重要。本文将深入解析`Android view构造方法第3个参数详解 demo`,并提供相关的实践示例。 首先,我们来看一下View类的主要构造方法: ...

    Android 自定义View实现水平温度计

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求创建独特且功能丰富的UI组件。本项目"Android 自定义View实现水平温度计"就是这样一个实例,它通过自定义View来展示一个水平方向的温度计,...

    Android中View绘制流程

    开发者可以在这个方法中使用Canvas对象进行绘图操作,如绘制文本、图片、形状等。`drawRect()`, `drawText()`, `drawBitmap()`等是常用的绘图API。 自定义ViewGroup时,需要重写这些方法以实现特定的布局逻辑。例如...

    android的view遍历以及多重查找

    使用方法可见示例: 子View遍历 ViewGroup root = (ViewGroup) findViewById(android.R.id.content); LayoutTraverser.build(new LayoutTraverser.Processor() { @Override public void process(View view) { //...

    在android里面通过view画线

    以上就是一个简单的在Android中使用View画线的示例。你可以在此基础上扩展,比如添加参数来动态改变线条的颜色、宽度,或者绘制多条线,甚至可以结合触摸事件来实现动态画线的效果。这样的练习作品有助于提升对...

    android 获取界面部分view,view截图,生成bitmap图片

    要将View转换为Bitmap,我们可以使用`View.draw()`方法将View绘制到一个`Canvas`上,然后调用`canvas.drawBitmap()`。首先创建一个与View大小相同的Bitmap,然后创建一个与Bitmap关联的Canvas,最后调用View的`draw...

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

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

    android 自定义View 实例

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据需求创建独特的用户界面元素,以实现更加丰富和个性化的交互体验。本实例主要讲解如何在Android中自定义View,并提供了一个可作为参考的demo。 首先...

    android项目下对图片高斯模糊毛玻璃自定义view

    在Android中,自定义View是通过继承View或者ViewGroup类并重写其onDraw()方法来实现的。在这个项目中,你需要创建一个新的View类,包含绘制图片、应用高斯模糊和设置毛玻璃效果的方法。关键步骤包括: 1. 初始化:...

    Android中父View和子view的点击事件

    Android系统的事件分发主要由View的`dispatchTouchEvent()`、`onTouchEvent()`、`onInterceptTouchEvent()`三个方法协同完成。通过阅读源码,我们可以更深入地理解点击事件的处理流程,这对于优化性能和解决复杂场景...

    Android 自定义View视图

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

    Android 使用Kotlin自定义View的方法教程

    随着google宣布kotlin作为官方开发语言,在Android中使用kotlin的趋势也越来越明显,最近被kotlin的文章轰炸了,所以决定上手试一下,试过之后,感觉靠它灵简直有魔性。特别是一句话写出一个复杂的循环的时候,简直...

    android View添加阴影效果

    在提供的`ShadowDemo`项目中,可能包含了使用`elevation`和`layer-list`的示例代码,你可以通过分析和运行这些代码,更深入地理解和掌握这两种方法。同时,也可以参考项目的源代码,学习如何在实际项目中灵活运用...

    Android判断touch事件点是否在view范围内的方法

    在Android中,我们通常通过重写View的`onTouchEvent(MotionEvent event)`方法来监听和处理触摸事件。在该方法中,我们可以获取到事件的动作类型和坐标信息。例如,ACTION_DOWN表示手指触碰屏幕的那一刻,这时我们...

    Android自定义view实现水印效果

    在Android开发中,自定义View是一种常见的需求,用于实现特定的视觉效果或功能。本教程将探讨如何通过自定义View来实现水印效果,让应用能够在屏幕上动态地展示自定义的文字水印。水印通常用于保护版权或者增加信息...

    android NavigationView的使用

    在本文中,我们将深入探讨`NavigationView`的使用方法、功能特性以及如何在实际项目中有效地集成它。 一、`NavigationView`的基本结构 `NavigationView`在XML布局中定义,它包含一个`headerLayout`(头部布局)和...

Global site tag (gtag.js) - Google Analytics