android - How to get the screen size? -
i trying set sprite image background , didn't success set image size screen size.
i'm trying this:
public class game extends surfaceview implements runnable { private surfaceholder holder; private boolean isrunning = false; private thread gamethread; private sprite s; private int screenwidth; private int screenheight; canvas canvas; // private sprite[] sprites; private final static int max_fps = 40; //desired fps private final static int frame_period = 1000 / max_fps; // frame period public game(context context) { super(context); holder = getholder(); holder.addcallback(new surfaceholder.callback() { @override public void surfacecreated(surfaceholder holder) { } @override public void surfacechanged(surfaceholder holder, int format, int width, int height) { screenwidth = width; screenheight = height; } @override public void surfacedestroyed(surfaceholder holder) { } }); //====== not working // display display = ((activity)context).getwindowmanager().getdefaultdisplay(); // int swidth = display.getwidth(); // int sheight = display.getheight(); //====== not working // displaymetrics dm = new displaymetrics(); // ((activity)context).getwindowmanager().getdefaultdisplay().getmetrics(dm); // int swidth = dm.widthpixels; // int sheight = dm.heightpixels; //====== not working // screenheight=canvas.getheight(); // screenwidth=canvas.getwidth(); s=new sprite(0, 0, bitmapfactory.decoderesource(this.getresources(), r.mipmap.back)); } /** * start or resume game. */ public void resume() { isrunning = true; gamethread = new thread(this); gamethread.start(); } /** * pause game loop */ public void pause() { isrunning = false; boolean retry = true; while (retry) { try { gamethread.join(); retry = false; } catch (interruptedexception e) { // try again shutting down thread } } } class sprite { int x; int y; int directionx = 1; int directiony = 1; int speed = 10; int color = 0; bitmap image; public sprite(int x, int y) { this.x = x; this.y = y; } public sprite(int x, int y, bitmap image) { this(x, y); this.image = image; } public sprite(int x, int y, bitmap image, int color) { this(x, y, image); this.color = color; } } protected void step() { //blablabla } protected void render(canvas canvas) { canvas.drawcolor(color.black); paint p = new paint(); canvas.drawbitmap(s.image,s.x,s.y,p); } @override public void run() { while(isrunning) { // need make sure surface ready if (! holder.getsurface().isvalid()) { continue; } long started = system.currenttimemillis(); // update step(); // draw canvas = holder.lockcanvas(); if (canvas != null) { render(canvas); holder.unlockcanvasandpost(canvas); } float deltatime = (system.currenttimemillis() - started); int sleeptime = (int) (frame_period - deltatime); if (sleeptime > 0) { try { gamethread.sleep(sleeptime); } catch (interruptedexception e) { } } while (sleeptime < 0) { step(); sleeptime += frame_period; } } } }
this options doesn't work:
//====== not working // display display = ((activity)context).getwindowmanager().getdefaultdisplay(); // int swidth = display.getwidth(); // int sheight = display.getheight(); //====== not working // displaymetrics dm = new displaymetrics(); // ((activity)context).getwindowmanager().getdefaultdisplay().getmetrics(dm); // int swidth = dm.widthpixels; // int sheight = dm.heightpixels; //====== not working // screenheight=canvas.getheight(); // screenwidth=canvas.getwidth();
so how can canvas or current screen size? , set sprite.image full screen ?
try size in pixels,
display display = getwindowmanager().getdefaultdisplay(); point size = new point(); display.getsize(size); int width = size.x; int height = size.y;
Comments
Post a Comment