新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于Android嵌入式平臺傳感器應用開發水平儀

        基于Android嵌入式平臺傳感器應用開發水平儀

        作者: 時間:2012-04-16 來源:網絡 收藏

        BitmapxiaBitmap2;//右下的氣泡

        //背景矩形的位置聲明

        intshang1_X=60;//上面的大矩形圖

        intshang1_Y=12;

        intzuo1_X=12;//左面的大矩形圖

        intzuo1_Y=60;

        intzhong1_X=65;//中間的大圓圖

        intzhong1_Y=65;

        intxia1_X=145;//右下的矩形圖

        intxia1_Y=145;//水泡的位置聲明

        intshang2_X;//上面的氣泡XY坐標

        intshang2_Y;

        intzuo2_X;//左面圖的氣泡XY坐標

        intzuo2_Y;

        intzhong2_X;//中間的小氣泡XY坐標

        intzhong2_Y;

        intxia2_X;//右下的氣泡XY坐標

        intxia2_Y;

        publicMainView(Contextcontext,AttributeSetattrs){

        super(context,attrs);

        initBitmap();//初始化圖片資源

        initLocation();//初始化氣泡的位置

        }

        privatevoidinitBitmap(){//初始化圖片的方法

        …//該處省略了部分代碼,將在后面進行介紹

        }

        privatevoidinitLocation(){//初始化氣泡位置的方法

        …//該處省略了部分代碼,將在后面進行介紹

        }

        @Override

        protectedvoidonDraw(Canvascanvas){//重寫的繪制方法

        super。onDraw(canvas);

        …//該處省略了部分代碼,將在后面進行介紹

        }

        }

        上述代碼中的initBitmap以及initLocation方法是對界面進行初始化方法,而onDraw方法會根據需要繪制整個界面。

        MainView類構造器中調用了兩個單獨的方法對整個界面進行了初始化,這是一種非常好的編程習慣。因為把不同功能的代碼各自編寫成獨立的方法可以使主邏輯清晰,且各個方法中的代碼都不是很長,會大大提高代碼的可讀性以及可維護性。

        完成了代碼框架的開發后就可以對其中各個方法進行開發了,首先開發的是圖片資源的初始化方法,其代碼如下:

        privatevoidinitBitmap(){//初始化圖片資源的方法

        shangBitmap1=BitmapFactory。decodeResource(getResources(),R。drawable。shang1);

        shangBitmap2=BitmapFactory。decodeResource(getResources(),R。drawable。shang2);

        zuoBitmap1=BitmapFactory。decodeResource(getResources(),R。drawable。zuo1);

        zuoBitmap2=BitmapFactory。decodeResource(getResources(),R。drawable。zuo2);

        zhongBitmap1=BitmapFactory。decodeResource(getResources(),R。drawable。zhong1);

        zhongBitmap2=BitmapFactory。decodeResource(getResources(),R。drawable。zhong2);

        xiaBitmap1=BitmapFactory。decodeResource(getResources(),R。drawable。xia1);

        xiaBitmap2=BitmapFactory。decodeResource(getResources(),R。drawable。xia2);

        }

        上述代碼為initBitmap方法的全部代碼,其作用是對程序中所有的圖片資源進行初始化,在開發該方法之前,應該確保所有的圖片資源已經存放到了指定的目錄下。

        完成了圖片資源初始化方法的開發后,便可對氣泡位置初始化方法initLocation進行開發了,其代碼如下:

        privatevoidinitLocation(){//初始化氣泡位置的方法

        shang2_X=shang1_X+shangBitmap1。getWidth()/2-shangBitmap2。getWidth()/2;

        shang2_Y=shang1_Y+shangBitmap1。getHeight()/2-shangBitmap2。getHeight()/2;

        zuo2_X=zuo1_X+zuoBitmap1。getWidth()/2-zuoBitmap2。getWidth()/2;

        zuo2_Y=zuo1_Y+zuoBitmap1。getHeight()/2-zuoBitmap2。getHeight()/2;

        zhong2_X=zhong1_X+zhongBitmap1。getWidth()/2-zhongBitmap2。getWidth()/2;

        zhong2_Y=zhong1_Y+zhongBitmap1。getHeight()/2-zhongBitmap2。getHeight()/2;

        xia2_X=xia1_X+xiaBitmap1。getWidth()/2-xiaBitmap2。getWidth()/2;

        xia2_Y=xia1_Y+xiaBitmap1。getHeight()/2-xiaBitmap2。getHeight()/2;

        }

        在該方法中通過相應圖片的寬度和高度動態計算氣泡的初始坐標,采用此方法動態計算氣泡坐標的好處是當日后更改圖片資源后,不需要重寫修改源代碼即可正常運行,大大提高了程序的可維護性。

        在完成了各個初始化方法的開發后就可以對繪制方法onDraw進行開發,該方法主要負責界面的繪制工作,其代碼如下:

        @Override

        protectedvoidonDraw(Canvascanvas){//界面繪制方法super。onDraw(canvas);

        canvas。drawColor(Color。WHITE);//設置背景色為白色

        paint。setColor(Color。BLUE);//設置畫筆顏色

        paint。setStyle(Style。STROKE);//設置畫筆為不填充

        canvas。drawRect(5,5,315,315,paint);//繪制外邊框矩形

        //畫背景矩形

        canvas。drawBitmap(shangBitmap1,shang1_X,shang1_Y,paint);//上

        canvas。drawBitmap(zuoBitmap1,zuo1_X,zuo1_Y,paint);//左

        canvas。drawBitmap(zhongBitmap1,zhong1_X,zhong1_Y,paint);//中

        canvas。drawBitmap(xiaBitmap1,xia1_X,xia1_Y,paint);//下

        //開始繪制氣泡

        canvas。drawBitmap(shangBitmap2,shang2_X,shang2_Y,paint);//上

        canvas。drawBitmap(zuoBitmap2,zuo2_X,zuo2_Y,paint);//左

        canvas。drawBitmap(zhongBitmap2,zhong2_X,zhong2_Y,paint);//中

        canvas。drawBitmap(xiaBitmap2,xia2_X,xia2_Y,paint);//下

        paint。setColor(Color。GRAY);//設置畫筆顏色用來繪制刻度

        //繪制上面方框中的刻度

        canvas。drawLine(shang1_X+shangBitmap1。getWidth()/2-7,shang1_Y,shang1_X+shangBitmap1。getWidth()/2-7,shang1_Y+shangBitmap1。getHeight()-2,paint);

        canvas。drawLine(shang1_X+shangBitmap1。getWidth()/2+7,shang1_Y,shang1_X+shangBitmap1。getWidth()/2+7,shang1_Y+shangBitmap1。getHeight()-2,paint);

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 剑阁县| 台东市| 攀枝花市| 东光县| 海淀区| 改则县| 双流县| 大关县| 鹤岗市| 义乌市| 阳谷县| 剑河县| 健康| 巍山| 湾仔区| 汾阳市| 手游| 县级市| 红桥区| 汽车| 屏东县| 丹棱县| 广州市| 利川市| 怀宁县| 烟台市| 白沙| 清涧县| 依兰县| 斗六市| 神农架林区| 革吉县| 鄂伦春自治旗| 屯昌县| 永昌县| 阿鲁科尔沁旗| 平昌县| 华阴市| 西安市| 读书| 土默特右旗|