在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于Android嵌入式平臺(tái)傳感器應(yīng)用開發(fā)水平儀

            基于Android嵌入式平臺(tái)傳感器應(yīng)用開發(fā)水平儀

            作者: 時(shí)間:2012-04-16 來源:網(wǎng)絡(luò) 收藏

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

            canvas。drawLine(zuo1_X,zuo1_Y+zuoBitmap1。getHeight()/2-7,zuo1_X+zuoBitmap1。getWidth()-2,zuo1_Y+zuoBitmap1。getHeight()/2-7,paint);canvas。drawLine(zuo1_X,zuo1_Y+zuoBitmap1。getHeight()/2+7,zuo1_X+zuoBitmap1。getWidth()-2,zuo1_Y+zuoBitmap1。getHeight()/2+7,paint);

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

            canvas。drawLine(xia1_X+xiaBitmap1。getWidth()/2-10,xia1_Y+xiaBitmap1。getHeight()/2-20,xia1_X+xiaBitmap1。getWidth()/2+20,xia1_Y+xiaBitmap1。getHeight()/2+10,paint);

            canvas。drawLine(xia1_X+xiaBitmap1。getWidth()/2-20,xia1_Y+xiaBitmap1。getHeight()/2-10,xia1_X+xiaBitmap1。getWidth()/2+10,xia1_Y+xiaBitmap1。getHeight()/2+20,paint);

            //中間圓圈中的刻度(小圓)

            RectFoval=newRectF(zhong1_X+zhongBitmap1。getWidth()/2-10,zhong1_Y+zhongBitmap1。getHeight()/2-10,zhong1_X+zhongBitmap1。getWidth()/2+10,zhong1_Y+zhongBitmap1。getHeight()/2+10);

            canvas。drawOval(oval,paint);//繪制基準(zhǔn)線(圓)

            }

            在該方法中,根據(jù)相應(yīng)圖片的X、Y坐標(biāo)將圖片繪制到屏幕中,在圖片的繪制過程中,同樣動(dòng)態(tài)根據(jù)相應(yīng)圖片的寬和高計(jì)算需要繪制到的位置坐標(biāo),以提高程序的可維護(hù)性與靈活性。

            6相關(guān)XML文件的編寫

            完成了用于顯示儀界面的自定義View的Java代碼開發(fā)之后,就應(yīng)該對布局XML資源文件進(jìn)行編寫,以將之前開發(fā)的自定義View添加到用戶界面中。打開項(xiàng)目中res/layout目錄下的main。xml,在其中編寫如下的xml代碼:

            ?xmlversion=1。0encoding=utf-8?>!--編碼格式-->

            android:orientation=vertical

            android:layout_width=fill_parent

            android:layout_height=fill_parent>!--線性布局-->

            android:id=@+id/mainView

            android:layout_width=fill_parent

            android:layout_height=fill_parent/>!--自定義

            View-->

            /LinearLayout>

            編寫完布局文件main。xml后,還需要開發(fā)字符串資源文件strings。xml。打開res/values下的strings。xml文件,編寫如下的代碼:

            ?xmlversion=1。0encoding=utf-8?>!--編碼方式-->

            在該文件中只是對字符串a(chǎn)pp_name進(jìn)行了定義,在開發(fā)應(yīng)用程序時(shí),將字符串資源統(tǒng)一定義到一個(gè)xml文件中是一個(gè)很好的編程習(xí)慣。

            編寫完上述的xml資源文件后,為了調(diào)試還需要為此應(yīng)用程序添加網(wǎng)絡(luò)權(quán)限,打開項(xiàng)目根目錄下的Manifest。xml文件,在標(biāo)簽之前加入下列代碼:

            上述代碼的功能為此應(yīng)用程序添加了訪問網(wǎng)絡(luò)的權(quán)限。

            7Activity類的開發(fā)

            完成了自定義View以及XML文件的開發(fā)后,就可以對用戶界面對應(yīng)的Activity類進(jìn)行開發(fā),首先開發(fā)該類的代碼框架,其代碼如下:

            packagewyf。ytl;//聲明所在包

            importandroid。app。Activity;//引入相關(guān)類

            importandroid。hardware。SensorListener;

            importandroid。hardware。SensorManager;

            importandroid。os。Bundle;

            publicclassSPYActivityextendsActivity{//繼承ActivityMainViewmv;//主View

            intk=45;//靈敏度

            //SensorManagermySensorManager;

            //真機(jī)

            SensorManagerSimulatormySensorManager;//測試時(shí)@Override

            publicvoidonCreate(BundlesavedInstanceState){super。onCreate(savedInstanceState);

            setContentView(R。layout。main);//設(shè)置當(dāng)前用戶界面

            mv=(MainView)findViewById(R。id。mainView);

            mySensorManager=SensorManagerSimulator。getSystemService(this,SENSOR_SERVICE);//測試時(shí)

            mySensorManager。connectSimulator();//測試時(shí)

            //mySensorManager=(SensorManager)

            //getSystemService(SENSOR_SERVICE);//真機(jī)

            }

            privatefinalSensorListenermSensorLisener=newSensorListener(){//監(jiān)聽

            //器類

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

            };

            @Override

            protectedvoidonResume(){//添加監(jiān)聽

            mySensorManager。registerListener(mSensorLisener,SensorManager。SENSOR_ORIENTATION);

            super。onResume();

            }

            @Override

            protectedvoidonPause(){//取消監(jiān)聽

            mySensorManager。unregisterListener(mSensorLisener);

            super。onPause();

            }

            }

            上述代碼中除了重寫了onCreate方法外,還重寫了onRe-sume以及onPause方法為mySensorManager添加或刪除監(jiān)聽,并且定義了監(jiān)聽器類mSensorLisener。

            在完成了Activity類代碼框架的開發(fā)后就可以對其中的監(jiān)聽類進(jìn)行開發(fā),首先給出監(jiān)聽器類的代碼框架:

            privatefinalSensorListenermSensorLisener=

            newSensorListener(){//傳感器監(jiān)聽器類

            publicvoidonSensorChanged(intsensor,float[]values){…//該處省略了部分代碼,將在后面進(jìn)行介紹

            }

            @Override

            publicvoidonAccuracyChanged(intsensor,intaccuracy){}

            publicbooleanisContain(intx,inty){//判斷點(diǎn)是否在圓內(nèi)

            inttempx=(int)(x+mv。zhongBitmap2。getWidth()/2。0);

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


            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉