您的位置:首页 > 移动开发 > Android开发

Android电子白板 视频会议电子白板

2013-08-22 10:18 190 查看
Android电子白板 实现了功能。服务器传送和转发没放:废话不说直接贴代码了

MainActitvty.java(主类)

package com.ubi.whitebord;

import comm.ubi.util.DashPoint;
import comm.ubi.util.Point;
import comm.ubi.util.PointData;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.Spinner;

public class MainActivity extends Activity {
private LinearLayout linearLayout;
private DrawView m_view;
private int m_type=1;
private Boolean selectStatus=false;
private int resetDrawType;

@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Spinner s1 = (Spinner)findViewById(R.id.spinner01);
s1.setPrompt("选择权限");
String[] mItems = getResources().getStringArray(R.array.spinnermodel);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_gallery_item,mItems);
//样式
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
s1.setAdapter(adapter);
s1.setSelection(1, true);

linearLayout = (LinearLayout)findViewById(R.id.main_tab_container);
linearLayout.setOnTouchListener(new touchListener());
//画笔
RadioButton button3 = (RadioButton)findViewById(R.id.radio_button3);
button3.setOnClickListener(new button3ClickListener());
//直线
RadioButton button4 = (RadioButton)findViewById(R.id.radio_button4);
button4.setOnClickListener(new button4ClickListener());
//空心矩形
RadioButton button5 = (RadioButton)findViewById(R.id.radio_button5);
button5.setOnClickListener(new button5ClickListener());
//实心矩形
RadioButton button6=(RadioButton)findViewById(R.id.radio_button6);
button6.setOnClickListener(new button6ClickListener());
//空心圆
RadioButton button7=(RadioButton)findViewById(R.id.radio_button7);
button7.setOnClickListener(new button7ClickListener());
//实心圆
RadioButton button8=(RadioButton)findViewById(R.id.radio_button8);
button8.setOnClickListener(new button8ClickListener());
//选中用虚线的矩形
RadioButton button1 = (RadioButton)findViewById(R.id.radio_button1);
button1.setOnClickListener(new button1Clicklistener());
//选中删除功能
RadioButton button2 = (RadioButton)findViewById(R.id.radio_button2);
button2.setOnClickListener(new button2ClickListenner());

//清空
Button clear_button_top = (Button)findViewById(R.id.clear_button_top);
clear_button_top.setOnClickListener(new clearButtonListenner());

init();
}

private class button2ClickListenner implements OnClickListener{
@Override
public void onClick(View v) {
m_view.setDashListClear();
m_type=8;
}
}

private class clearButtonListenner implements OnClickListener{
@Override
public void onClick(View v) {
m_view.setClearArrayList();
m_view.setDashListClear();
m_view.invalidate();
}
}

private class button1Clicklistener implements OnClickListener{
@Override
public void onClick(View v) {
m_view.setDashListClear();
m_type=7;
}
}

/*private class button9ClickListener implements OnClickListener{
@Override
public void onClick(View v) {
m_type=7;
}
}*/

private class button8ClickListener implements OnClickListener{
@Override
public void onClick(View v) {
m_view.setDashListClear();
m_type=6;
}
}

private class button7ClickListener implements OnClickListener{
@Override
public void onClick(View v) {
m_view.setDashListClear();
m_type=5;
}
}

private class button6ClickListener implements OnClickListener{
@Override
public void onClick(View v) {
m_view.setDashListClear();
m_type=4;
}
}

private class button5ClickListener implements OnClickListener{
@Override
public void onClick(View v) {
m_view.setDashListClear();
m_type=3;
}
}

private class button4ClickListener implements OnClickListener{
@Override
public void onClick(View v) {
m_view.setDashListClear();
m_type=1;
}
}

private class button3ClickListener implements OnClickListener{
@Override
public void onClick(View v) {
m_view.setDashListClear();
m_type=2;
}
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

private void init(){
m_view=new DrawView(this);
linearLayout.addView(m_view);
}

private class touchListener implements OnTouchListener
{
PointData obj;
Point pointvalue;
@Override
public boolean onTouch(View v, MotionEvent event)
{
float x = event.getX();
float y = event.getY();

switch(event.getAction())
{
case MotionEvent.ACTION_DOWN:
m_view.moveObj.Init();

obj=new PointData();
obj.leftx=x;
obj.lefty=y;
//当选中的图形做标记
if(!m_view.dashList.isEmpty())
{
for(int i1=0; i1<m_view.dashList.size(); i1++)
{
DashPoint objSelect = m_view.dashList.get(i1);
if((int)x>=(int)objSelect.left && (int)x<=(int)objSelect.right && (int)y>=(int)objSelect.top && (int)y<=(int)objSelect.bottom)
{
selectStatus=true;
}

if((int)x<=(int)objSelect.left && (int)x>=(int)objSelect.right && (int)y<=(int)objSelect.top && (int)y>=(int)objSelect.bottom)
{
selectStatus=true;
}
}
}

if(!selectStatus)
{
m_view.moveObj.leftx=x;
m_view.moveObj.lefty=y;
}

break;
case MotionEvent.ACTION_UP:
obj.rightx=x;
obj.righty=y;
obj.drawType=m_type;

if(selectStatus)//选中
{
resetDrawType = 9;
obj.drawType=resetDrawType;
selectStatus=false;
}

m_view.isUp=false;//临时的那个画图就没了
m_view.setPonintCollection(obj);
m_view.invalidate();
break;
case MotionEvent.ACTION_MOVE:
pointvalue.x=x;
pointvalue.y=y;
obj.point.add(pointvalue);

if(!selectStatus)
{
m_view.isUp=true;
m_view.moveObj.rightx=x;
m_view.moveObj.righty=y;
m_view.moveObj.point.add(pointvalue);
m_view.moveObj.drawType=m_type;
}
m_view.invalidate();
break;
}
pointvalue = new Point();
pointvalue.startx=x;
pointvalue.starty=y;

return true;
}
}
}


DrawView.java(画图类)
package com.ubi.whitebord;

import java.util.ArrayList;
import java.util.Vector;

import comm.ubi.util.DashPoint;
import comm.ubi.util.Point;
import comm.ubi.util.PointData;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.DashPathEffect;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.PathEffect;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.Region;
import android.view.View;

class DrawView extends View
{
private ArrayList<PointData> list = new ArrayList<PointData>();
public PointData moveObj = new PointData();
public ArrayList<DashPoint> dashList = new ArrayList<DashPoint>();
public Boolean isUp=false;

public DrawView(Context context)
{
super(context);
}

protected void onDraw(Canvas canvas)
{
super.onDraw(canvas);
if(isUp)
{
switch(moveObj.drawType)
{
case 1://画线
drawLine(canvas,moveObj);
break;
case 2://画笔
drawPen(canvas,moveObj);
break;
case 3:
drawFillRect(canvas,moveObj);
break;
case 4://实心圆
drawFillRect(canvas,moveObj);
break;
case 5:
drawOval(canvas,moveObj);
break;
case 6:
drawOval(canvas,moveObj);
break;
case 7:
drawDashRect(canvas,moveObj);
break;
case 8:
drawDashRect(canvas,moveObj);
}
}
//存在的类型绘制
for(int i=0; i<list.size(); i++)
{
PointData obj = list.get(i);
switch(obj.drawType)
{
case 1://画线
drawLine(canvas,obj);
break;
case 2://画笔
drawPen(canvas,obj);
break;
case 3://空心矩形
drawFillRect(canvas,obj);
break;
case 4://实心矩形
drawFillRect(canvas,obj);
break;
case 5://空心圆
drawOval(canvas,obj);
break;
case 6://实心圆
drawOval(canvas,obj);
break;
case 7://虚线选中
selectDrawRectDashed(canvas,obj);
break;
case 8://删除
selectDelete(canvas,obj);
break;
case 9:
//选中的点 down和up的点相减就是我们每个物品的移动的点
resetDrawInvalidate(canvas,obj);
break;
}
}
drawDashRectSelect(canvas,dashList);
}

protected void resetDrawInvalidate(Canvas canvas , PointData obj)
{
float x , y;
x=obj.rightx-obj.leftx;
y=obj.righty-obj.lefty;

for(int i=0; i<dashList.size(); i++)
{
DashPoint dashObj = dashList.get(i);
dashList.get(i).left = dashObj.left+(x);
dashList.get(i).top= dashObj.top+(y);
dashList.get(i).right = dashObj.right+(x);
dashList.get(i).bottom = dashObj.bottom+(y);

//加上了list里面的数据
list.get(dashObj.point_index).leftx=list.get(dashObj.point_index).leftx+(x);
list.get(dashObj.point_index).lefty=list.get(dashObj.point_index).lefty+(y);
list.get(dashObj.point_index).rightx=list.get(dashObj.point_index).rightx+(x);
list.get(dashObj.point_index).righty=list.get(dashObj.point_index).righty+(y);

//当是画笔的时候需要我们把移动过程的点数也加上
if (list.get(dashObj.point_index).drawType == 2)
{
for(int listi=0;listi<list.get(dashObj.point_index).point.size();listi++)
{
Point pointvalue = list.get(dashObj.point_index).point.get(listi);
pointvalue.startx=pointvalue.startx+(x);
pointvalue.starty=pointvalue.starty+(y);
pointvalue.x=pointvalue.x+(x);
pointvalue.y=pointvalue.y+(y);
}
}
}

list.remove(obj);
invalidate();
}

protected void drawDashRect(Canvas canvas , PointData obj)
{
Paint p = new Paint();
PathEffect effects = new DashPathEffect(new float[]{5,5,5,5},1);
p.setPathEffect(effects);
p.setColor(Color.GRAY);//设置颜色
p.setStyle(Paint.Style.STROKE);//设置填满
canvas.drawRect(obj.leftx, obj.lefty, obj.rightx, obj.righty, p);
}

protected void selectDelete(Canvas canvas , PointData obj)
{
Vector<PointData> myArray = new Vector<PointData>();
for(int i=0; i<list.size(); i++)
{
PointData objs = list.get(i);

//虚线矩形必须进行判断
float left=obj.leftx,top=obj.lefty,right=obj.rightx,bottom=obj.righty;
if(obj.rightx<obj.leftx)
{
left=obj.rightx;
right=obj.leftx;
}

if(obj.righty<obj.lefty)
{
top=obj.righty;
bottom=obj.lefty;
}
switch(objs.drawType)
{
case 1://画线
Region currentRegion = new Region();
currentRegion.set((int)left, (int)top, (int)right, (int)bottom);

Region clip1 = new Region();
clip1.set(0, 0, 2000, 2000);

//这条线的region
Region compareRegion = new Region();
left=objs.leftx;
top=objs.lefty;
right=objs.rightx;
bottom=objs.righty;

if(objs.rightx<objs.leftx)
{
left=objs.rightx;
right=objs.leftx;
}
if(objs.righty<objs.lefty)
{
top=objs.righty;
bottom=objs.lefty;
}

Path m_path = new Path();
m_path.moveTo(left, top);
m_path.lineTo(left+1, top);
m_path.lineTo(right+1, bottom);
m_path.lineTo(right, bottom);
m_path.lineTo(left, top);
compareRegion.setPath(m_path, clip1);
if(currentRegion.op(compareRegion, Region.Op.INTERSECT))
{
myArray.add(objs);
}
break;
case 2://画笔
//当前的这个矩形的Region
Region R1 = new Region();
R1.set((int)left, (int)top, (int)right, (int)bottom);

//定义的一个空的Region
Region region = new Region();
region.set(0, 0, 1, 1);

//为了下面的Region
Region clip = new Region();
clip.set(0, 0, 2000, 2000);

int minleft=0;
int mintop=0;
int maxright=0;
int maxbottom=0;

for(int peni=0; peni<objs.point.size(); peni++)
{
Point pointvalue = objs.point.get(peni);
float x = pointvalue.x;
float y = pointvalue.y;
float startx=pointvalue.startx;
float starty=pointvalue.starty;

if (0 == peni)
{
minleft = maxright = (int)objs.leftx;
mintop = maxbottom = (int)objs.lefty;
}

if (minleft > (int)x)
{
minleft = (int)x;
}

if (mintop > (int)y)
{
mintop = (int)y;
}

if (maxright < (int)x)
{
maxright = (int)x;
}

if (maxbottom < (int)y)
{
maxbottom = (int)y;
}

Region newRegion = new Region();

left=startx;
top=starty;
right=x;
bottom=y;

if(x<startx)
{
left=x;
right=startx;
}

if(y<starty)
{
top=y;
bottom=starty;
}

Path rectRg = new Path();
rectRg.moveTo(left, top);
rectRg.lineTo(left+1, top);
rectRg.lineTo(right+1, bottom);
rectRg.lineTo(right, bottom);
rectRg.lineTo(left, top);

newRegion.setPath(rectRg, clip);
region.op(newRegion, Region.Op.UNION);
}
//dash的矩形和当前绘制的矩形的交集
if(R1.op(region, Region.Op.INTERSECT))
{
myArray.add(objs);
}
break;
case 3://空心矩形
Rect a = new Rect((int)left, (int)top, (int)right, (int)bottom);

left=objs.leftx;
top=objs.lefty;
right=objs.rightx;
bottom=objs.righty;
if(objs.rightx<objs.leftx)
{
left=objs.rightx;
right=objs.leftx;
}

if(objs.righty<objs.lefty)
{
top=objs.righty;
bottom=objs.lefty;
}

Rect b = new Rect((int)left, (int)top, (int)right, (int)bottom);
Boolean boolRect = Rect.intersects(a, b);
if(boolRect)
{
myArray.add(objs);
}
break;
case 4://实心矩形
Rect ax = new Rect((int)left, (int)top, (int)right, (int)bottom);
left=objs.leftx;
top=objs.lefty;
right=objs.rightx;
bottom=objs.righty;
if(objs.rightx<objs.leftx)
{
left=objs.rightx;
right=objs.leftx;
}

if(objs.righty<objs.lefty)
{
top=objs.righty;
bottom=objs.lefty;
}

Rect bx = new Rect((int)left, (int)top, (int)right, (int)bottom);
Boolean boolRectBoolean = Rect.intersects(ax, bx);
if(boolRectBoolean)
{
myArray.add(objs);
}
break;
case 5://空心圆
Region currentRegionF = new Region();
currentRegionF.set((int)left, (int)top, (int)right, (int)bottom);

//这条线的region
Region compareCircle = new Region();

left=objs.leftx;
top=objs.lefty;
right=objs.rightx;
bottom=objs.righty;
if(objs.rightx<objs.leftx)
{
left=objs.rightx;
right=objs.leftx;
}

if(objs.righty<objs.lefty)
{
top=objs.righty;
bottom=objs.lefty;
}
compareCircle.set((int)left,(int)top,(int)right,(int)bottom);

if(currentRegionF.op(compareCircle, Region.Op.INTERSECT))
{
myArray.add(objs);
}
break;
case 6://实心圆
Region currentRegionFill = new Region();
currentRegionFill.set((int)left, (int)top, (int)right, (int)bottom);

//这条线的region
Region compareCircleFill = new Region();

left=objs.leftx;
top=objs.lefty;
right=objs.rightx;
bottom=objs.righty;
if(objs.rightx<objs.leftx)
{
left=objs.rightx;
right=objs.leftx;
}

if(objs.righty<objs.lefty)
{
top=objs.righty;
bottom=objs.lefty;
}
compareCircleFill.set((int)left,(int)top,(int)right,(int)bottom);
if(currentRegionFill.op(compareCircleFill, Region.Op.INTERSECT))
{
myArray.add(objs);
}
break;
}
}

if(!myArray.isEmpty())
{
for(int ai=0; ai<myArray.size(); ai++)
{
list.remove(myArray.get(ai));
}
}

list.remove(obj);
invalidate();
}

protected void selectDrawRectDashed(Canvas canvas , PointData obj)
{
dashList.clear();
for(int i=0; i<list.size(); i++)
{
DashPoint dashObj = new DashPoint();
PointData objs = list.get(i);

//虚线矩形必须进行判断
float left=obj.leftx,top=obj.lefty,right=obj.rightx,bottom=obj.righty;
if(obj.rightx<obj.leftx)
{
left=obj.rightx;
right=obj.leftx;
}

if(obj.righty<obj.lefty)
{
top=obj.righty;
bottom=obj.lefty;
}
switch(objs.drawType)
{
case 1://画线
Region currentRegion = new Region();
currentRegion.set((int)left, (int)top, (int)right, (int)bottom);

Region clip1 = new Region();
clip1.set(0, 0, 2000, 2000);

//这条线的region
Region compareRegion = new Region();
left=objs.leftx;
top=objs.lefty;
right=objs.rightx;
bottom=objs.righty;

if(objs.rightx<objs.leftx)
{
left=objs.rightx;
right=objs.leftx;
}

if(objs.righty<objs.lefty)
{
top=objs.righty;
bottom=objs.lefty;
}

Path m_path = new Path();
m_path.moveTo(left, top);
m_path.lineTo(left+1, top);
m_path.lineTo(right+1, bottom);
m_path.lineTo(right, bottom);
m_path.lineTo(left, top);
compareRegion.setPath(m_path, clip1);

if(currentRegion.op(compareRegion, Region.Op.INTERSECT))
{
dashObj.left = left-4;
dashObj.top = top-4;
dashObj.right = right+4;
dashObj.bottom = bottom+4;
dashObj.point_index = i;
dashList.add(dashObj);
}
break;
case 2://画笔
//当前的这个矩形的Region
Region R1 = new Region();
R1.set((int)left, (int)top, (int)right, (int)bottom);

//定义的一个空的Region
Region region = new Region();
region.set(0, 0, 1, 1);

//为了下面的Region
Region clip = new Region();
clip.set(0, 0, 2000, 2000);

int minleft=0;
int mintop=0;
int maxright=0;
int maxbottom=0;

for(int peni=0; peni<objs.point.size(); peni++)
{
Point pointvalue = objs.point.get(peni);
float x = pointvalue.x;
float y = pointvalue.y;
float startx=pointvalue.startx;
float starty=pointvalue.starty;

if (0 == peni)
{
minleft = maxright = (int)objs.leftx;
mintop = maxbottom = (int)objs.lefty;
}

if (minleft > (int)x)
{
minleft = (int)x;
}

if (mintop > (int)y)
{
mintop = (int)y;
}

if (maxright < (int)x)
{
maxright = (int)x;
}

if (maxbottom < (int)y)
{
maxbottom = (int)y;
}

Region newRegion = new Region();

left=startx;
top=starty;
right=x;
bottom=y;

if(x<startx)
{
left=x;
right=startx;
}

if(y<starty)
{
top=y;
bottom=starty;
}

Path rectRg = new Path();
rectRg.moveTo(left, top);
rectRg.lineTo(left+1, top);
rectRg.lineTo(right+1, bottom);
rectRg.lineTo(right, bottom);
rectRg.lineTo(left, top);

newRegion.setPath(rectRg, clip);
region.op(newRegion, Region.Op.UNION);
}
//dash的矩形和当前绘制的矩形的交集
if(R1.op(region, Region.Op.INTERSECT))
{
dashObj.left = minleft-4;
dashObj.top = mintop-4;
dashObj.right = maxright+4;
dashObj.bottom = maxbottom+4;
dashObj.point_index = i;
dashList.add(dashObj);
}
break;
case 3://空心矩形
Rect a = new Rect((int)left, (int)top, (int)right, (int)bottom);

left=objs.leftx;
top=objs.lefty;
right=objs.rightx;
bottom=objs.righty;
if(objs.rightx<objs.leftx)
{
left=objs.rightx;
right=objs.leftx;
}

if(objs.righty<objs.lefty)
{
top=objs.righty;
bottom=objs.lefty;
}

Rect b = new Rect((int)left, (int)top, (int)right, (int)bottom);
Boolean boolRect = Rect.intersects(a, b);
if(boolRect)
{
dashObj.left = left-4;
dashObj.top = top-4;
dashObj.right = right+4;
dashObj.bottom = bottom+4;
dashObj.point_index = i;
dashList.add(dashObj);
}
break;
case 4://实心矩形
Rect ax = new Rect((int)left, (int)top, (int)right, (int)bottom);

left=objs.leftx;
top=objs.lefty;
right=objs.rightx;
bottom=objs.righty;
if(objs.rightx<objs.leftx)
{
left=objs.rightx;
right=objs.leftx;
}

if(objs.righty<objs.lefty)
{
top=objs.righty;
bottom=objs.lefty;
}

Rect bx = new Rect((int)left, (int)top, (int)right, (int)bottom);
Boolean boolRectBoolean = Rect.intersects(ax, bx);
if(boolRectBoolean)
{
dashObj.left = left-4;
dashObj.top = top-4;
dashObj.right = right+4;
dashObj.bottom = bottom+4;
dashObj.point_index = i;
dashList.add(dashObj);
}
break;
case 5://空心圆
Region currentRegionF = new Region();
currentRegionF.set((int)left, (int)top, (int)right, (int)bottom);

//这条线的region
Region compareCircle = new Region();

left=objs.leftx;
top=objs.lefty;
right=objs.rightx;
bottom=objs.righty;
if(objs.rightx<objs.leftx)
{
left=objs.rightx;
right=objs.leftx;
}

if(objs.righty<objs.lefty)
{
top=objs.righty;
bottom=objs.lefty;
}
compareCircle.set((int)left,(int)top,(int)right,(int)bottom);

if(currentRegionF.op(compareCircle, Region.Op.INTERSECT))
{
dashObj.left = left-4;
dashObj.top = top-4;
dashObj.right = right+4;
dashObj.bottom = bottom+4;
dashObj.point_index = i;
dashList.add(dashObj);
}
break;
case 6://实心圆
Region currentRegionFill = new Region();
currentRegionFill.set((int)left, (int)top, (int)right, (int)bottom);

//这条线的region
Region compareCircleFill = new Region();

left=objs.leftx;
top=objs.lefty;
right=objs.rightx;
bottom=objs.righty;
if(objs.rightx<objs.leftx)
{
left=objs.rightx;
right=objs.leftx;
}

if(objs.righty<objs.lefty)
{
top=objs.righty;
bottom=objs.lefty;
}
compareCircleFill.set((int)left,(int)top,(int)right,(int)bottom);
if(currentRegionFill.op(compareCircleFill, Region.Op.INTERSECT))
{
dashObj.left = left-4;
dashObj.top = top-4;
dashObj.right = right+4;
dashObj.bottom = bottom+4;
dashObj.point_index = i;
dashList.add(dashObj);
}
break;
}
}

if(!dashList.isEmpty())
{
drawDashRectSelect(canvas,dashList);
}

list.remove(obj);
}

protected void drawDashRectSelect(Canvas canvas , ArrayList<DashPoint> dashList)
{
Paint p = new Paint();
PathEffect effects = new DashPathEffect(new float[]{5,5,5,5},1);
p.setPathEffect(effects);
p.setColor(Color.GRAY);//设置颜色
p.setStyle(Paint.Style.STROKE);//设置填满
for(int i=0; i<dashList.size(); i++)
{
DashPoint obj = dashList.get(i);
canvas.drawRect(obj.left, obj.top, obj.right, obj.bottom, p);
}
}

protected void drawPen(Canvas canvas , PointData obj)
{
Path mPath = new Path();//路径对象
Paint mPaint = new Paint();
mPaint.setColor(Color.BLACK);//设置颜色
mPaint.setAntiAlias(true);//画笔抗锯齿
mPaint.setStyle(Paint.Style.STROKE);//画笔的类型
mPaint.setStrokeCap(Paint.Cap.ROUND);//设置画笔圆滑状
mPaint.setStrokeWidth(2);//设置线的宽度

mPath.moveTo(obj.leftx, obj.lefty);

for(int i=0; i<obj.point.size(); i++)
{
Point pointvalue = obj.point.get(i);
float x = pointvalue.x;
float y = pointvalue.y;
float startx=pointvalue.startx;
float starty=pointvalue.starty;
mPath.quadTo(startx, starty , x, y);
}

canvas.drawPath(mPath, mPaint);
}

protected void drawLine(Canvas canvas , PointData obj){
Paint p = new Paint();
p.setColor(Color.BLACK);
canvas.drawLine(obj.leftx, obj.lefty, obj.rightx, obj.righty, p);
}

protected void drawFillRect(Canvas canvas , PointData obj){
Paint p = new Paint();
if(obj.drawType==3){//空心圆
p.setColor(Color.GRAY);//设置颜色
p.setStyle(Paint.Style.STROKE);//设置填满
canvas.drawRect(obj.leftx, obj.lefty, obj.rightx, obj.righty, p);
}else if(obj.drawType==4){//实心圆
p.setColor(Color.GRAY);//设置颜色
p.setStyle(Paint.Style.FILL);//设置填满
canvas.drawRect(obj.leftx, obj.lefty, obj.rightx, obj.righty, p);
}
}

protected void drawOval(Canvas canvas , PointData obj){
Paint p = new Paint();
if(obj.drawType==5){//空心圆
p.setColor(Color.GRAY);//设置颜色
p.setStyle(Paint.Style.STROKE);//设置空心
canvas.drawOval(new RectF(obj.leftx, obj.lefty, obj.rightx, obj.righty), p);
}else if(obj.drawType==6){//实心圆
p.setColor(Color.GRAY);//设置颜色
p.setStyle(Paint.Style.FILL);//设置填满
canvas.drawOval(new RectF(obj.leftx, obj.lefty, obj.rightx, obj.righty), p);
}
}

protected void setPonintCollection(PointData o){
list.add(o);
}

protected void setClearArrayList(){
list.clear();
moveObj.Init();
invalidate();
}

protected void setDashListClear()
{
dashList.clear();
invalidate();
}
}


DashPoint.java(数据类)

package comm.ubi.util;

public class DashPoint
{
public float left,top,right,bottom;
public int point_index;

public DashPoint()
{

}
}


Point.java(数据类)

package comm.ubi.util;

public class Point{
public float x,y,startx,starty;

public Point(float x, float y,float startx , float starty){
this.x=x;
this.y=y;
this.startx=startx;
this.starty=starty;
}

public Point(){

}
}


PointData.java(数据类)

package comm.ubi.util;

import java.util.ArrayList;
public class PointData{
public float leftx;
public float lefty;
public float rightx;
public float righty;
public int drawType;
public ArrayList<Point> point = new ArrayList<Point>();

public PointData(float leftx , float lefty, float rightx, float righty, int drawType){
this.leftx=leftx;
this.lefty=lefty;
this.rightx=rightx;
this.righty=righty;
this.drawType=drawType;
}

public PointData(){

}
public void Init()
{
this.leftx=0;
this.lefty=0;
this.rightx=0;
this.righty=0;
this.drawType=0;
this.point.clear();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: