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. }
复制代码

转载于:https://my.oschina.net/cathleencheng/blog/17690

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值