抱歉,亲爱的,我给你整个活动女巫我使用并在画布上绘制矩形。
public class CanvasExample extends Activity
{
/** Called when the activity is first created. */
RelativeLayout relMainOperationLayout;
RelativeLayout relTabHeader;
//RelativeLayout relMidalLayout;
RelativeLayout relBelowLayout;
Context myContext;
DrawCanvas drawCanvas;
static boolean loadFlage=true;
BibleHelper bibleHelper;
Bitmap mainBitmap;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
myContext=CanvasExample.this;
bibleHelper=new BibleHelper(CanvasExample.this,myContext);
bibleHelper.setFullScreen();
LayoutInflater layoutInflater=(LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
int layoutId = myContext.getResources().getIdentifier("main","layout",getPackageName());
relMainOperationLayout = (RelativeLayout) layoutInflater.inflate(layoutId,null);
relTabHeader=(RelativeLayout) relMainOperationLayout.findViewById(R.id.relHeadLayout);
//relMidalLayout=(RelativeLayout) relMainOperationLayout.findViewById(R.id.relmidalLayout);
relBelowLayout=(RelativeLayout) relMainOperationLayout.findViewById(R.id.relBelowLayout);
mainBitmap=getIconDrawable(R.drawable.splash);
drawCanvas=new DrawCanvas(CanvasExample.this,myContext);
//drawCanvas.setBackgroundColor(Color.YELLOW);
//drawCanvas.setBackgroundDrawable(CanvasExample.this.getResources().getDrawable(R.drawable.splash));
drawCanvas.setBackgroundDrawable(new BitmapDrawable(mainBitmap));
RelativeLayout.LayoutParams drawParams=new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
drawParams.addRule(RelativeLayout.BELOW, relTabHeader.getId());
//relMidalLayout.addView(drawCanvas,drawParams);
relMainOperationLayout.addView(drawCanvas,drawParams);
// mainImageView=new ImageView(CanvasExample.this);
//
// RelativeLayout.LayoutParams mainParams=new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,200);
// relMainOperationLayout.addView(mainImageView,mainParams);
// mainImageView.setBackgroundDrawable(CanvasExample.this.getResources().getDrawable(R.drawable.ic_launcher));
setContentView(relMainOperationLayout);
}
class DrawCanvas extends View
{
Context drawContext;
Activity drawActivity;
ImageView image;
Paint mPaint;
int left=0,right=0,top=0,bottom=0;
Canvas passCanvas;
//Bitmap bitmapOrg;
// bitmapOrg;
public DrawCanvas(Activity activity,Context context)
{
super(activity);
this.drawActivity=activity;
this.drawContext=context;
//bitmapOrg = BitmapFactory.decodeResource(getResources(),R.drawable.splash);
mPaint = new Paint();
mPaint.setDither(true);
mPaint.setColor(Color.RED);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeJoin(Paint.Join.ROUND);
mPaint.setStrokeCap(Paint.Cap.ROUND);
mPaint.setStrokeWidth(3);
mPaint.setFilterBitmap(true);
this.setOnTouchListener(new View.OnTouchListener() {
//@Override
public boolean onTouch(View v, MotionEvent event)
{
switch (event.getActionMasked())
{
case MotionEvent.ACTION_DOWN:
invalidate();
left=(int) event.getX();
right=left+1;
top=(int) event.getY();
bottom=top+1;
mPaint.setColor(Color.BLACK);
onDraw(passCanvas=new Canvas());
break;
case MotionEvent.ACTION_MOVE:
invalidate();
int tempX=(int) event.getX();
//System.err.println("Get X->"+event.getX());
if(tempX>right)
{
right=right+1;
}
else
{
right=right-1;
}
//System.err.println("Get Y->"+event.getY());
int tempY=(int) event.getY();
if(tempY>bottom)
{
bottom=bottom+1;
}else
{
bottom=bottom-1;
}
mPaint.setColor(Color.GREEN);
onDraw(passCanvas=new Canvas());
break;
case MotionEvent.ACTION_UP:
invalidate();
mPaint.setColor(Color.RED);
onDraw(passCanvas=new Canvas());
System.err.println("After Touch Up");
CanvasExample.loadFlage=false;
onDraw(passCanvas=new Canvas());
/*
bibleHelper.showErrorLog("Start X -->"+left);
bibleHelper.showErrorLog("Real X -->"+event.getX());
bibleHelper.showErrorLog("End X-->"+right);
bibleHelper.showErrorLog("Start Y-->"+top);
bibleHelper.showErrorLog("Real Y-->"+top);
bibleHelper.showErrorLog("End Y-->"+bottom);
*/
Bitmap croppedBmp = Bitmap.createBitmap(mainBitmap,left,top,right,bottom);
final Dialog dialog = new Dialog(CanvasExample.this);
dialog.setContentView(R.layout.custom_dialog);
dialog.setTitle("Title...");
dialog.setCancelable(true);
ImageView image = (ImageView) dialog.findViewById(R.id.main);
image.setImageBitmap(croppedBmp);
Button btnClose=(Button) dialog.findViewById(R.id.btnClose);
btnClose.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
dialog.dismiss();
}
});
dialog.show();
break;
default:
break;
}
return true;
}
});
}
@Override
protected void onDraw(Canvas canvas)
{
canvas.drawRect(left, top, right, bottom, mPaint);
}
}
private Bitmap getIconDrawable(int imageId)
{
//Drawable rtnDrawable = null;
Bitmap imageBitmap=null;
try
{
int getImageWH[];
imageBitmap = BitmapFactory.decodeResource(getResources(),imageId);
int IW = imageBitmap.getWidth();
int IH = imageBitmap.getHeight();
bibleHelper.showErrorLog("Icon Width->" + IW);
bibleHelper.showErrorLog("Icon Height->" + IH);
WindowManager winManager = (WindowManager) CanvasExample.this.getSystemService(Context.WINDOW_SERVICE);
int screenwidth = winManager.getDefaultDisplay().getWidth();
int screenheight = winManager.getDefaultDisplay().getHeight();
getImageWH = bibleHelper.getObjectWidthHeight(screenwidth,screenheight, IW, IH);
bibleHelper.showErrorLog("Get Icon Width->" + getImageWH[0]);
bibleHelper.showErrorLog("Get Icon Height->" + getImageWH[1]);
imageBitmap = Bitmap.createScaledBitmap(imageBitmap, getImageWH[0],getImageWH[1], false);
bibleHelper.showErrorLog("New Width-->"+imageBitmap.getWidth());
bibleHelper.showErrorLog("New Height-->"+imageBitmap.getHeight());
//rtnDrawable = (Drawable) new BitmapDrawable(imageBitmap);
} catch (Exception ex) {
bibleHelper.showErrorLog("Convert Icon Exception-->"+ ex.toString());
}
//return rtnDrawable;
return imageBitmap;
}
}
在这个 BibleHelper 是 Helper 类女巫用于显示一些消息和日志。