直接上代码,代码内容上有相应的注释。效果作简短介绍,有一个圆形一个方形,当一只手指触控的时候只有圆形随着移动;当两只手指触控的时候圆形与方形各自随着手指移动。不要忘记使用View.invalidate()对绘图进行更新。

/* import相关class */
importandroid.app.Activity;
importandroid.content.Context;
importandroid.graphics.Canvas;
importandroid.graphics.Color;
importandroid.graphics.LinearGradient;
importandroid.graphics.Paint;
importandroid.graphics.Shader;
importandroid.os.Bundle;
importandroid.util.Log;
importandroid.view.MotionEvent;
importandroid.view.View;
importandroid.view.Window;

public classmulti extendsActivity
{
//x1,y1是第一个触控点;x2,y2是第二个触控点

publicfloatx1,x2,y1,y2;
privateMyViewmyView;

@Override
publicvoidonCreate(BundlesavedInstanceState)
{
//设置没有title
requestWindowFeature(Window.FEATURE_NO_TITLE);
//getWindow().setFlags(flags,mask)
x1=30;
y1=30;
x2=200;
y2=30;
super.onCreate(savedInstanceState);
/*设置ContentView为自定义的MyView*/
myView=newMyView(this);
setContentView(myView);

}

@Override
publicbooleanonTouchEvent(MotionEventevent)
{
//if(event.getX(1)==event.getX(0)&&event.getY(1)==event.getY(0))、
//如果有两个点接触才执行该代码段
if(event.getPointerCount()==2)
{
x2=event.getX(1);
y2=event.getY(1);
}
x1=event.getX(0);
y1=event.getY(0);
//用于更新view

myView.invalidate();

//Log.d("multi01",event.getPointerCount()+"xy1:"+x1+","
//+y1+"xy2:"+x2+","+y2);
returnsuper.onTouchEvent(event);
}

/*自定义继承View的MyView*/
privateclassMyViewextendsView
{
publicMyView(Contextcontext)
{
super(context);
}

/*覆盖onDraw()*/
@Override
protectedvoidonDraw(Canvascanvas)
{
super.onDraw(canvas);
/*设置背景为白色*/
canvas.drawColor(Color.WHITE);

Paintpaint=newPaint();
/*去锯齿*/
paint.setAntiAlias(true);

/*设置paint的style为FILL:实心*/
paint.setStyle(Paint.Style.FILL);
/*设置paint的颜色*/
paint.setColor(Color.BLUE);

/*画一个实心圆*/
canvas.drawCircle(x1,y1,30,paint);
/*画一个实心正方形*/
canvas.drawRect(x2-30,y2-30,x2+30,y2+30,paint);
paint.setColor(Color.RED);
canvas.drawLine(x1,y1,x2,y2,paint);
/*设置渐变色*/
ShadermShader=newLinearGradient(0,0,100,100,newint[]
{Color.RED,Color.GREEN,Color.BLUE,Color.YELLOW},null,
Shader.TileMode.REPEAT);
paint.setShader(mShader);

/*写字*/
paint.setTextSize(14);
canvas.drawText("xy1:"+x1+";"+y1,80,50,paint);
canvas.drawText("xy2:"+x2+";"+y2,80,120,paint);
}
}

}


更多相关文章

  1. android错误之ListView设置setOnItemClickListener失效
  2. android连接真机 调试未测试
  3. 【转】Android学习笔记-常用的一些源码,防止忘记了。。。
  4. [转]Android中两种设置全屏的方法
  5. 自定义字体主题+自定义背景+设置radiobutton的字体的选中状态的
  6. Android的基本组件
  7. Android开发中Material Design风格设置页面的实践
  8. Android(安卓)- LayoutAnimation 动画效果 - 示例
  9. Retrofit2.0 增加公共参数

随机推荐

  1. Android使用HttpURLConnection访问网络
  2. android ndk Hello World
  3. Android中的 animation
  4. Android Socket&Cocos2dx的资料
  5. Android 开发环境 adt-bundle android-st
  6. 关于手机启动的方向,和屏幕的单,双击事件
  7. Android中PopupWindow用法
  8. Ubuntu下建立Android开发环境
  9. Android Graphics - 3 BufferQueue 和 Gr
  10. Android 4.0 Launcher2源码分析——启动