我在屏幕上看到了一个画布 - 以及一次又一次地绘制它的线程。我想绘制一些Bitmaps(球的图片),当我的应用程序运行时,它将变得越来越小。 我怎样才能做到这一点? 这对我来说非常重要,谢谢大家, 伊泰。
public class OurView extends SurfaceView implements Runnable{//to make it to a trhead
float width,height;//בשביל ייצוג האורך והרוחב של המסך
Point size = new Point();
Random r =new Random();//בשביל להגריל מיקום לכדור
Thread t=null;//הגדרת הטראד של החלק הזה
SurfaceHolder holder;//דרך להתנהל עם הטראד
boolean isItOk=false;//לקבוע מתי הקאנביס מפסיק לצייר את עצמו
Display display = getWindowManager().getDefaultDisplay();//בשביל האורך והרוחב של המסך
public OurView(Context context) {
super(context);
// TODO Auto-generated constructor stub
width=this.getWidth();
height=this.getHeight();
holder= getHolder();
}
@Override
public void run() {
// TODO Auto-generated method stub
display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
this.width = size.x;
this.height = size.y;
/* x = (r.nextInt(width-redball.getWidth()));
y=(r.nextInt(height-redball.getHeight()));
*/
height=(float) (height*0.85);
int marginX= Math.round(width-redball.getWidth());
int marginY =Math.round(height-redball.getHeight());
x = r.nextInt(marginX);
y=r.nextInt(marginY);
while(isItOk==true&&pressed!=true){
if (!holder.getSurface().isValid())
continue;
Canvas c= holder.lockCanvas();
c.drawRGB(0, 0, 0);
c.drawBitmap(redball, x, y, null);//אם רוצים שמרכז המעגל יהיה, אפשר לעשות חלק 2. אולי אופציה להעלאת רמה.
c.
holder.unlockCanvasAndPost(c);
}
if(pressed==true){
Canvas c= holder.lockCanvas();
c.drawRGB(0, 0, 0);
holder.unlockCanvasAndPost(c);
}
}
答案 0 :(得分:0)
你应该使用一种方法来缩放球并在AsyncTask上绘制它,因为绘制很多位图会造成内存泄漏。
答案 1 :(得分:0)
Bitmap.createScaledBitmap()
你要添加x,y大小,它会返回给你新的大小的位图