android - The app screen is smaller on my phone -


i have made snake app, uses canvas:

the xml layout:

<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android"     android:id="@+id/screen"     android:layout_width="fill_parent"     android:layout_height="fill_parent"     android:layout_gravity="bottom"     android:orientation="vertical" >           <framelayout             android:layout_width="match_parent"             android:layout_height="match_parent"             android:layout_weight="1" >     <linearlayout         android:id="@+id/surface"         android:layout_width="match_parent"         android:layout_height="match_parent"         android:orientation="vertical"         android:layout_weight="1" >      </linearlayout>          <linearlayout             android:id="@+id/gameover"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:background="@drawable/gameover"             android:orientation="vertical"             android:visibility="gone"             android:layout_gravity="center"             android:gravity="center" >              <textview                 android:id="@+id/scoretv"                 android:layout_width="wrap_content"                 android:layout_height="wrap_content" />             <textview                 android:layout_width="wrap_content"                 android:layout_height="wrap_content"                 android:text="would save it?" />               <edittext                 android:id="@+id/name"                 android:hint="enter name"                 android:layout_width="match_parent"                 android:layout_height="wrap_content"                 android:ems="10" >                  <requestfocus />             </edittext>      <linearlayout         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:orientation="horizontal"         android:gravity="center" >              <button                 android:id="@+id/yes"                 style="?android:attr/buttonstylesmall"                 android:layout_width="wrap_content"                 android:layout_height="wrap_content"                 android:text="save" />              <button                 android:id="@+id/no"                 style="?android:attr/buttonstylesmall"                 android:layout_width="wrap_content"                 android:layout_height="wrap_content"                 android:text="no tnx, menu" />      </linearlayout>         </linearlayout>         <linearlayout             android:id="@+id/stoped"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:background="@drawable/gameover"             android:orientation="vertical"             android:visibility="gone"             android:layout_gravity="center"             android:gravity="center" >              <textview                 android:id="@+id/textview1"                 android:layout_width="wrap_content"                 android:layout_height="wrap_content"                 android:text="do you want leave?" />      <linearlayout         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:orientation="horizontal"         android:gravity="center" >              <button                 android:id="@+id/continue"                 style="?android:attr/buttonstylesmall"                 android:layout_width="wrap_content"                 android:layout_height="wrap_content"                 android:text="continue game" />              <button                 android:id="@+id/leave"                 style="?android:attr/buttonstylesmall"                 android:layout_width="wrap_content"                 android:layout_height="wrap_content"                 android:text="leave menu" />      </linearlayout>         </linearlayout>          </framelayout>    <relativelayout     android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:layout_marginend="0dp"     android:layout_gravity="bottom" >      <imageview         android:id="@+id/right"         android:layout_width="50dp"         android:layout_height="50dp"         android:layout_aligntop="@+id/down"         android:layout_torightof="@+id/down"         android:src="@drawable/right" />      <imageview         android:id="@+id/left"         android:layout_width="50dp"         android:layout_height="50dp"         android:layout_aligntop="@+id/down"         android:layout_toleftof="@+id/down"         android:src="@drawable/left" />      <imageview         android:id="@+id/up"         android:layout_width="50dp"         android:layout_height="50dp"         android:layout_alignparenttop="true"         android:layout_toleftof="@+id/right"         android:src="@drawable/up" />      <imageview         android:id="@+id/down"         android:layout_width="50dp"         android:layout_height="50dp"         android:layout_below="@+id/up"         android:layout_centerhorizontal="true"         android:src="@drawable/down" />      <textview         android:id="@+id/back"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_alignparentleft="true"         android:layout_alignparenttop="true"         android:text="go menu" />      <textview         android:id="@+id/pause"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_alignparentright="true"         android:layout_alignparenttop="true"         android:text="pause" />  </relativelayout>  </linearlayout> 

the activity:(part of it, out clicklisteners)

public class classicactivity extends activity  { classic g;  imageview left; imageview right; imageview up; imageview down;  textview pause; textview back;  textview scoretv;  linearlayout surface;  linearlayout screen;  linearlayout stoped; linearlayout gameover;  scoredatasource sds;  button no; button yes; edittext name; button continueb; button leave;   @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);       setcontentview(r.layout.activity_classic);     sds=new scoredatasource(this);     gameover=(linearlayout) findviewbyid(r.id.gameover);     screen = (linearlayout)findviewbyid(r.id.screen);     surface = (linearlayout)findviewbyid(r.id.surface);     g= new classic(this, surface);     surface.addview(g); 

no not brining class classic becaouse realy bigone uses other classes also, uses canvas draw on view, have set snake width , walls 10(that might problem), writing havent set width, corrdinates , color (your score:x).

here screen shot of game on phone , on emulator:

on emulator:

enter image description here

on phone:enter image description here

if need me add more code, or data not sure suppose upload.

how can make them match?thanks help

you using pixels when drawing... should scale them current screen density.
make them become dp.

simply find scale factor based on current screen density.
multiply (coordinates, sizes, ...) factor:

final float scale = resources.getsystem().getdisplaymetrics().density;  

[edit]

consider difference between dp , sp (used text).

the dp has constant scale transition px: dp = px * scale

while sp has scalable ratio: sp = px * scale * ratio or sp = dp * ratio
ratio can used people need larger font sizes, example, use device more comfortably.

let's want text 25% more dp scaling (which 125%), ratio 1.25.


Comments

Popular posts from this blog

android - Get AccessToken using signpost OAuth without opening a browser (Two legged Oauth) -

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: mockito -

google shop client API returns 400 bad request error while adding an item -