方法1:繪圖時獲雀辍(不推薦)
繪圖部分代碼改為:
int winx=canvas.getWidth();//令winx等于屏幕寬度
int winy=canvas.getHeight();//令winy等于屏幕高度
Paint p=new Paint();//新建畫筆
p.setStrokeWidth(3);//設(shè)置線條寬度
p.setColor(Color.rgb(255,255,0));//設(shè)置畫筆顏色(黃)
p.setTextSize(100);//設(shè)置文字大小
p.setTextAlign(Paint.Align.CENTER);//設(shè)為中心對齊
canvas.drawLine(10,winy-10,winx-10,winy-10,p);//在接近屏幕底部的位置畫條橫線
canvas.drawText(String.valueOf(winx)+","+String.valueOf(winy),winx/2,winy/2,p);
//在屏幕中間顯示winx和winy的值
代碼
效果
我們先用getWidth和getHight獲得屏幕寬度和高度咧最,分別存到變量winx和winy中捂人。在此之后我們就可以用這兩個數(shù)來設(shè)計界面了。
這個程序要把winx和winy的數(shù)值顯示到屏幕正中心的位置矢沿,就要先根據(jù)屏幕寬度和高度算出中心點的坐標滥搭,即(winx/2,winy/2)捣鲸。然后把數(shù)值按照中心對齊的方法用drawText畫出來瑟匆。
然而drawText只能畫字符串。要想把一個數(shù)值轉(zhuǎn)變成字符串栽惶,需要用String.valueOf函數(shù)愁溜。而字符串可以直接用加號連接。這樣String.valueOf(winx)+","+String.valueOf(winy)就表示最終要顯示的字符串了媒役。
看到運行結(jié)果是'1440祝谚,2560',說明我的手機屏幕寬度是1440酣衷,高度是2560交惯。也就是winx和winy分別是1440和2560。
除了顯示文字穿仪,這個程序還在接近屏幕底部位置畫了條線席爽。
方法2:程序開始時獲取(推薦)
所有代碼改為:
package com.baobao.sayhello;
import android.app.*;
import android.content.*;
import android.graphics.*;
import android.os.*;
import android.view.*;
import java.util.*;
class mview extends View{//自定義一個叫mview的新類型啊片,繼承View
int winx,winy;
public mview(Context con){//構(gòu)造(初始化)函數(shù)
super(con);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh)
{
//窗口大小改變時觸發(fā)
super.onSizeChanged(w, h, oldw, oldh);
winx=w;
winy=h;
}
@Override
protected void onDraw(Canvas canvas)
{
//繪圖時觸發(fā)
Paint p=new Paint();//新建畫筆
p.setStrokeWidth(3);//設(shè)置線條寬度
p.setColor(Color.rgb(255,255,0));//設(shè)置畫筆顏色(黃)
p.setTextSize(100);//設(shè)置文字大小
p.setTextAlign(Paint.Align.CENTER);//設(shè)為中心對齊
canvas.drawLine(10,winy-10,winx-10,winy-10,p);//在接近屏幕底部的位置畫條橫線
canvas.drawText(String.valueOf(winx)+","+String.valueOf(winy),winx/2,winy/2,p);
//在屏幕中間顯示winx和winy的值
}
@Override
public boolean onTouchEvent(MotionEvent event)
{
//觸控屏幕時觸發(fā)
invalidate();//重畫屏幕
return true;//返回真只锻,表示已處理消息
}
}
public class MainActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
mview view=new mview(this);//新建一個叫view的mview
setContentView(view);//把view設(shè)為整個界面
}
}
這次第10行定義了全局變量winx和winy,并在20~21行給他們賦值為屏幕寬度和高度紫谷。運行效果和之前一樣齐饮。
這種方法的好處是在任何時候都能調(diào)用winx和winy。