Android入門學習_代碼詳解

  其實對咱們新手來講,通常的看過幾天代碼都明白了什麼意思,可是我感受要是讓咱們說說的話,還真沒有幾我的能說的很明白,那麼咱們今天就和你們分享一些基礎不能在基礎的東西了,但願新手們要謙虛的看看,在這裏我就多說兩句,就是說新手的時候必定要好好的學習基礎,可不能明白了就過去,那其實你根本沒有明白,基礎沒有打好,那咱們就無法再往深了裏面學。很少說了,我就直接上代碼吧。代碼中有註釋。你們會看明白的。

java代碼:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- 聲明xml的版本以及編碼格式 -->
  3. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <!-- 添加一個垂直的線性佈局 -->
  8. <wyf.ytl.MainView
  9. android:id="@+id/mainView"
  10. android:layout_width="fill_parent"
  11. android:layout_height="fill_parent"
  12. />
  13. <!-- 向線性佈局中添加一個自定義的View -->
  14. </LinearLayout> 說明:該佈局很是簡單,只需將自定義的View添加到一個垂直的線性佈局中便可。
  15. 開發主邏輯代碼,即讀取手機的姿態,而後改變小水泡的座標。首先搭建Sample.java的代碼框架,以下所示。

  16. Java代碼:package eoe.demo;
  17. //聲明所在包
  18. import org.openintents.sensorsimulator.hardware.SensorManagerSimulator;
  19. //引入相關類
  20. import android.app.Activity;
  21. //引入相關類
  22. import android.hardware.SensorListener;
  23. //引入相關類
  24. import android.hardware.SensorManager;
  25. //引入相關類
  26. import android.os.Bundle;
  27. //引入相關類
  28. public class Sample extends Activity {
  29. MainView mv;
  30. //主View
  31. int k = 45;
  32. //靈敏度
  33. private SensorManagerSimulator mySensorManager;
  34. //SensorManager對象引用
  35. //private SensorManager mySensorManager;
  36. //SensorManager對象引用
  37. @Override
  38. public void onCreate(Bundle savedInstanceState) {
  39. super.onCreate(savedInstanceState);
  40. setContentView(R.layout.main);
  41. //設置當前的用戶界面
  42. mv = (MainView) findViewById(R.id.mainView);
  43. //獲取主View
  44. //mySensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
  45. //得到SensorManager
  46. //調試時用
  47. mySensorManager = SensorManagerSimulator.getSystemService(this, SENSOR_ SERVICE); mySensorManager.connectSimulator();
  48. }
  49. private SensorListener mySensorListener = new SensorListener(){
  50. //監聽器
  51. @Override
  52. public void onAccuracyChanged(int sensor, int accuracy) {
  53. }
  54. //重寫onAccuracyChanged方法
  55. @Override
  56. public void onSensorChanged(int sensor, float[] values) {
  57. //重寫onSensorChanged方法
  58. //此處省略的是接收手機姿態的數據並進行處理的代碼,將在以後進行介紹
  59. }
  60. public boolean isContain(int x, int y){
  61. //判斷點是否在圓內
  62. int tempx = (int) (x + mv.small.getWidth()/2.0);
  63. //獲得水泡tempx座標
  64. int tempy = (int) (y + mv.small.getWidth()/2.0);
  65. //獲得水泡tempy座標
  66. int ox = (int) (mv.big_X + mv.big.getWidth()/2.0);
  67. //獲得大圓的X座標
  68. int oy = (int) (mv.big_X + mv.big.getWidth()/2.0);
  69. //獲得大圓的Y座標
  70. if(Math.sqrt((tempx-ox)*(tempx-ox)+(tempy-oy)*(tempy-oy)) 36 >(mv.big.getWidth()/2.0-mv.small.getWidth()/2.0)){
  71. return false;
  72. //不在圓內
  73. }
  74. else {
  75. return true;
  76. //在圓內
  77. }
  78. }
  79. };
  80. @Override
  81. protected void onResume() {
  82. //重寫的onResume方法
  83. mySensorManager.registerListener(
  84. //註冊監聽
  85. mySensorListener,
  86. //監聽器SensorListener對象
  87. SensorManager.SENSOR_ORIENTATION,
  88. //傳感器的類型爲姿態
  89. SensorManager.SENSOR_DELAY_UI //頻度
  90. );
  91. super.onResume();
  92. }
  93. @Override
  94. protected void onPause() {
  95. //重寫onPause方法
  96. mySensorManager.unregisterListener(mySensorListener);
  97. //取消註冊監聽器
  98. super.onPause();
  99. }

  100. }
複製代碼
相關文章
相關標籤/搜索