掌上快递之主界面篇(2)

简介:

概述

这是Fragment1的第二部分内容 侧滑栏,(主要效果是仿QQ效果)使用了github上的slidingmenu_librarygithub开源控件

效果图如下:

【1】内容区域会伴随菜单的出现而缩小

【2】侧滑菜单给人的感觉是隐藏在内容的后面,而不是拖出来的感觉

【3】侧滑菜单有一个缩放以及透明度的效果

然后就是简单的百度地图,和摇一摇显示小知识


1、布局文件

include在fragment1的主布局文件R.layout.activity_main中      <include layout="@layout/left_slide" />

由于侧滑栏只是一个listview即可布局文件比较简单

[html]  view plain  copy
  1. <span style="font-family:Microsoft YaHei;font-size:14px;"><?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:orientation="vertical" >  
  6.   
  7.     <ImageView  
  8.         android:id="@+id/header"  
  9.         android:layout_width="wrap_content"  
  10.         android:layout_height="wrap_content"  
  11.         android:padding="10dp"  
  12.         android:layout_gravity="center_horizontal"  
  13.         android:src="@drawable/slideledefheader" />  
  14.   
  15.     <ListView  
  16.         android:id="@+id/leftslide_list"  
  17.         android:layout_width="match_parent"  
  18.         android:layout_height="match_parent"  
  19.         android:layout_marginTop="20dp"  
  20.         android:cacheColorHint="#00000000"  
  21.         android:footerDividersEnabled="false"  
  22.         android:gravity="center_horizontal"  
  23.         android:listSelector="@android:color/transparent" >  
  24.     </ListView>  
  25.   
  26. </LinearLayout></span>  

2、侧滑特效实现分析

那么我们如何能做到呢:

我们可以在滑动的时候,不断的改变内容区域的大小;如何改变呢?我们在菜单出现的整个过程中,不断记录菜单显示的宽度与其总宽度的比值,是个从0到1的过程,然后把0~1转化为1~0.7(假设内容区域缩小至0.7);不断去缩小内容区域;

上面已经可以得到0到1的这个值了,那么缩放和透明度的动画就不在话下了;

我们使用的HorizontalScrollView,然后水平放置了菜单和内容,如何让菜单可以隐藏到内容的后面呢?其实也比较简单,在菜单出现的过程中,不断设置菜单的x方向的偏移量;0的时候完全隐藏,0.3的时候,隐藏x方向偏移量为0.7个宽度

主要代码在SlidingMenu.Java

[java]  view plain  copy
  1. <span style="font-family:Microsoft YaHei;font-size:14px;">    /** 
  2.      * 滚动发生时 
  3.      */  
  4.     @Override  
  5.     protected void onScrollChanged(int l, int t, int oldl, int oldt) {  
  6.         super.onScrollChanged(l, t, oldl, oldt);  
  7.         float scale = l * 1.0f / mMenuWidth; // 1 ~ 0  
  8.   
  9.         /** 
  10.          * 区别1:内容区域1.0~0.7 缩放的效果 scale : 1.0~0.0 0.7 + 0.3 * scale 
  11.          *  
  12.          * 区别2:菜单的偏移量需要修改 
  13.          *  
  14.          * 区别3:菜单的显示时有缩放以及透明度变化 缩放:0.7 ~1.0 1.0 - scale * 0.3 透明度 0.6 ~ 1.0 0.6+ 
  15.          * 0.4 * (1- scale) ; 
  16.          *  
  17.          */  
  18.         float rightScale = 0.7f + 0.3f * scale;  
  19.         float leftScale = 1.0f - scale * 0.3f;  
  20.         float leftAlpha = 0.6f + 0.4f * (1 - scale);  
  21.   
  22.         // 调用属性动画,设置TranslationX  
  23.         ViewHelper.setTranslationX(mMenu, mMenuWidth * scale * 0.8f);  
  24.   
  25.         ViewHelper.setScaleX(mMenu, leftScale);  
  26.         ViewHelper.setScaleY(mMenu, leftScale);  
  27.         ViewHelper.setAlpha(mMenu, leftAlpha);  
  28.         // 设置content的缩放的中心点  
  29.         ViewHelper.setPivotX(mContent, 0);  
  30.         ViewHelper.setPivotY(mContent, mContent.getHeight() / 2);  
  31.         ViewHelper.setScaleX(mContent, rightScale);  
  32.         ViewHelper.setScaleY(mContent, rightScale);  
  33.   
  34.     }  
  35. </span>  



3、百度地图

关于获取百度地图秘钥和基本功能实现请见我的另一篇博文百度地图入门,地图部分做的比较简单,主要就是继承了BDLocationListener实现自己的定位(private class MyLocationListener implements BDLocationListener),然后使用附近搜索mPoiSearch
                        .searchNearby((new PoiNearbySearchOption())
                                .location(latLng).keyword("快递").radius(3000)
                                .pageNum(0));

[java]  view plain  copy
  1. <span style="font-family:Microsoft YaHei;font-size:14px;">package com.map;  
  2.   
  3. import android.app.Activity;  
  4. import android.content.Context;  
  5. import android.os.Bundle;  
  6. import android.view.Menu;  
  7. import android.view.MenuItem;  
  8. import android.view.Window;  
  9. import android.widget.Toast;  
  10.   
  11. import com.baidu.location.BDLocation;  
  12. import com.baidu.location.BDLocationListener;  
  13. import com.baidu.location.LocationClient;  
  14. import com.baidu.location.LocationClientOption;  
  15. import com.baidu.mapapi.SDKInitializer;  
  16. import com.baidu.mapapi.map.BaiduMap;  
  17. import com.baidu.mapapi.map.BitmapDescriptor;  
  18. import com.baidu.mapapi.map.BitmapDescriptorFactory;  
  19. import com.baidu.mapapi.map.MapStatusUpdate;  
  20. import com.baidu.mapapi.map.MapStatusUpdateFactory;  
  21. import com.baidu.mapapi.map.MapView;  
  22. import com.baidu.mapapi.map.MyLocationConfiguration;  
  23. import com.baidu.mapapi.map.MyLocationConfiguration.LocationMode;  
  24. import com.baidu.mapapi.map.MyLocationData;  
  25. import com.baidu.mapapi.model.LatLng;  
  26. import com.baidu.mapapi.overlayutil.PoiOverlay;  
  27. import com.baidu.mapapi.search.core.CityInfo;  
  28. import com.baidu.mapapi.search.core.SearchResult;  
  29. import com.baidu.mapapi.search.poi.OnGetPoiSearchResultListener;  
  30. import com.baidu.mapapi.search.poi.PoiDetailResult;  
  31. import com.baidu.mapapi.search.poi.PoiNearbySearchOption;  
  32. import com.baidu.mapapi.search.poi.PoiResult;  
  33. import com.baidu.mapapi.search.poi.PoiSearch;  
  34. import com.baidu.mapapi.search.poi.PoiSortType;  
  35. import com.map.MyOrientationListener.OnOrientationListener;  
  36. import com.weimeijing.feigeshudi.R;  
  37.   
  38. public class Baidu extends Activity {  
  39.     // 定义所需要的控件  
  40.     private MapView mMapView = null;  
  41.     private BaiduMap mBaiduMap = null;  
  42.     private Context context = null;  
  43.     // 定位相关的控件  
  44.     private LocationClient mLocationClient;  
  45.     private MyLocationListener mLocationListener;  
  46.     private boolean isFirstIn = true;  
  47.     // 记录经纬度  
  48.     private double mLatitude;  
  49.     private double mLongtitude;  
  50.     // 自定义定位图标  
  51.     private BitmapDescriptor mIconLocation;  
  52.     // 方向传感器  
  53.     private MyOrientationListener myOrientationListener;  
  54.     private float mCurrentX;  
  55.     private LocationMode mLocationMode;  
  56.     // poi  
  57.     private PoiSearch mPoiSearch = null;  
  58.   
  59.     @Override  
  60.     protected void onCreate(Bundle savedInstanceState) {  
  61.         // TODO Auto-generated method stub  
  62.         super.onCreate(savedInstanceState);  
  63.         // 去除titlebar  
  64.         requestWindowFeature(Window.FEATURE_NO_TITLE);  
  65.         // 在使用SDK各组件之前初始化context信息,传入ApplicationContext  
  66.         // 注意该方法要再setContentView方法之前实现  
  67.         SDKInitializer.initialize(getApplicationContext());  
  68.         // 加载地图布局文件  
  69.         setContentView(R.layout.baidumap);  
  70.         this.context = this;  
  71.         // 初始化定位  
  72.         iniLocation();  
  73.         // 获取地图控件引用  
  74.         initView();  
  75.   
  76.         mBaiduMap.setMyLocationEnabled(true);  
  77.         if (!mLocationClient.isStarted())  
  78.             // 开启定位  
  79.             mLocationClient.start();  
  80.         // 开启方向传感器  
  81.         myOrientationListener.start();  
  82.   
  83.     }  
  84.   
  85.     private void iniLocation() {  
  86.         // 默认是普通模式  
  87.         mLocationMode = LocationMode.NORMAL;  
  88.         mLocationClient = new LocationClient(this);  
  89.         mLocationListener = new MyLocationListener();  
  90.         // 注册监听  
  91.         mLocationClient.registerLocationListener(mLocationListener);  
  92.         // 设置配置  
  93.         LocationClientOption option = new LocationClientOption();  
  94.         Toast.makeText(Baidu.this"将显示您附近3000米内的快递点", Toast.LENGTH_LONG)  
  95.                 .show();  
  96.         // 设置左边类型  
  97.         option.setCoorType("bd09ll");  
  98.         option.setIsNeedAddress(true);// 返回定位结果信息  
  99.         option.setOpenGps(true);  
  100.         // 设置一秒产生一次请求  
  101.         option.setScanSpan(2000);  
  102.         mLocationClient.setLocOption(option);  
  103.         // 初始化定位图标  
  104.         mIconLocation = BitmapDescriptorFactory  
  105.                 .fromResource(R.drawable.navi_map_gps_locked);  
  106.         // 方向箭头监听  
  107.         myOrientationListener = new MyOrientationListener(context);  
  108.         myOrientationListener  
  109.                 .setOnOrientationListener(new OnOrientationListener() {  
  110.                     @Override  
  111.                     public void onOrientationChanged(float x) {  
  112.                         mCurrentX = x;  
  113.                     }  
  114.                 });  
  115.   
  116.     }  
  117.   
  118.     private void initView() {  
  119.         mMapView = (MapView) findViewById(R.id.id_bmapView);  
  120.         // 获得到地图  
  121.         mBaiduMap = mMapView.getMap();  
  122.         // 设置地图显示比例  
  123.         MapStatusUpdate msu = MapStatusUpdateFactory.zoomBy(5.0f);// 100米左右  
  124.         mBaiduMap.setMapStatus(msu);  
  125.   
  126.     }  
  127.   
  128.     @Override  
  129.     protected void onDestroy() {  
  130.         // TODO Auto-generated method stub  
  131.         mPoiSearch.destroy();  
  132.         super.onDestroy();  
  133.         mMapView.onDestroy();  
  134.     }  
  135.   
  136.     @Override  
  137.     protected void onResume() {  
  138.         // TODO Auto-generated method stub  
  139.         super.onResume();  
  140.         mMapView.onResume();  
  141.     }  
  142.   
  143.     @Override  
  144.     protected void onStart() {  
  145.         // TODO Auto-generated method stub  
  146.         super.onStart();  
  147.         /* 
  148.          * mBaiduMap.setMyLocationEnabled(true); if 
  149.          * (!mLocationClient.isStarted()) // 开启定位 mLocationClient.start(); // 
  150.          * 开启方向传感器 myOrientationListener.start(); 
  151.          */  
  152.     }  
  153.   
  154.     @Override  
  155.     protected void onPause() {  
  156.         // TODO Auto-generated method stub  
  157.         super.onPause();  
  158.         mMapView.onPause();  
  159.     }  
  160.   
  161.     @Override  
  162.     protected void onStop() {  
  163.         // TODO Auto-generated method stub  
  164.         super.onStop();  
  165.         // 停止定位  
  166.         mBaiduMap.setMyLocationEnabled(false);  
  167.         mLocationClient.stop();  
  168.         // 停止方向传感器  
  169.         myOrientationListener.stop();  
  170.   
  171.     }  
  172.   
  173.     // 按钮菜单  
  174.     @Override  
  175.     public boolean onCreateOptionsMenu(Menu menu) {  
  176.         getMenuInflater().inflate(R.menu.main, menu);  
  177.         return true;  
  178.     }  
  179.   
  180.     // 菜单按钮的选择  
  181.     @Override  
  182.     public boolean onOptionsItemSelected(MenuItem item) {  
  183.         // 通过Item的ID选择用户选择按钮  
  184.         switch (item.getItemId()) {  
  185.         case R.id.id_map_commom:  
  186.             // 加载地图为普通模式  
  187.             mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);  
  188.             break;  
  189.   
  190.         case R.id.id_map_site:  
  191.             mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);  
  192.             break;  
  193.         /* 
  194.          * case R.id.id_map_location: centerToMyLocation(); break; 
  195.          */  
  196.         case R.id.id_map_mode_common:  
  197.             mLocationMode = LocationMode.NORMAL;  
  198.             break;  
  199.         /* 
  200.          * case R.id.id_map_mode_following: mLocationMode = 
  201.          * LocationMode.FOLLOWING; break; 
  202.          */  
  203.         case R.id.id_map_mode_compass:  
  204.             mLocationMode = LocationMode.COMPASS;  
  205.             break;  
  206.   
  207.         default:  
  208.             break;  
  209.         }  
  210.         return super.onOptionsItemSelected(item);  
  211.     }  
  212.   
  213.     // 定位到我的位置  
  214.     private void centerToMyLocation() {  
  215.         LatLng latLng = new LatLng(mLatitude, mLongtitude);  
  216.         MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng);  
  217.         mBaiduMap.animateMapStatus(msu);  
  218.     }  
  219.   
  220.     private class MyLocationListener implements BDLocationListener {  
  221.   
  222.         // 定位成功之后的回调函数  
  223.         @Override  
  224.         public void onReceiveLocation(BDLocation location) {  
  225.             MyLocationData data = new MyLocationData.Builder() // 建造者模式  
  226.                     .direction(mCurrentX)//  
  227.                     .accuracy(location.getRadius())//  
  228.                     .latitude(location.getLatitude())//  
  229.                     .longitude(location.getLongitude())//  
  230.                     .build();  
  231.   
  232.             mBaiduMap.setMyLocationData(data);  
  233.             // 设置自定义图标  
  234.             MyLocationConfiguration config = new MyLocationConfiguration(  
  235.                     mLocationMode, true, mIconLocation);  
  236.             mBaiduMap.setMyLocationConfigeration(config);  
  237.   
  238.             // 更新经纬度  
  239.             mLatitude = location.getLatitude();  
  240.             mLongtitude = location.getLongitude();  
  241.             // 初始化Poi搜索  
  242.             mPoiSearch = PoiSearch.newInstance();  
  243.             mPoiSearch  
  244.                     .setOnGetPoiSearchResultListener(new OnGetPoiSearchResultListener() {  
  245.                         @Override  
  246.                         public void onGetPoiResult(PoiResult result) {  
  247.                             if (result == null  
  248.                                     || result.error == SearchResult.ERRORNO.RESULT_NOT_FOUND) {  
  249.                                 return;  
  250.                             }  
  251.                             // 找到则显示覆盖物  
  252.                             if (result.error == SearchResult.ERRORNO.NO_ERROR) {  
  253.                                 mBaiduMap.clear();  
  254.                                 PoiOverlay overlay = new MyPoiOverlay(mBaiduMap);  
  255.                                 mBaiduMap.setOnMarkerClickListener(overlay);  
  256.                                 overlay.setData(result);  
  257.                                 overlay.addToMap();  
  258.                                 overlay.zoomToSpan();  
  259.                                 return;  
  260.                             }  
  261.                         }  
  262.   
  263.                         // 点击覆盖物  
  264.                         @Override  
  265.                         public void onGetPoiDetailResult(PoiDetailResult result) {  
  266.                             if (result.error != SearchResult.ERRORNO.NO_ERROR) {  
  267.                                 Toast.makeText(Baidu.this"抱歉,未找到结果",  
  268.                                         Toast.LENGTH_SHORT).show();  
  269.                             } else {  
  270.                                 Toast.makeText(  
  271.                                         Baidu.this,  
  272.                                         result.getName() + ": "  
  273.                                                 + result.getAddress(),  
  274.                                         Toast.LENGTH_SHORT).show();  
  275.   
  276.                                 /* 
  277.                                  * Toast.makeText(Baidu.this, 
  278.                                  * "将显示您附近5000米内的快递点", 
  279.                                  * Toast.LENGTH_LONG).show(); 
  280.                                  */  
  281.   
  282.                             }  
  283.                         }  
  284.                     });  
  285.             // mPoiSearch.setOnGetPoiSearchResultListener(this);  
  286.             /* 
  287.              * LatLng latLng1 = new LatLng(location.getLatitude(), 
  288.              * location.getLongitude());// 获取经纬度 
  289.              */  
  290.   
  291.             // 判断用户是否第一次进入地图  
  292.             if (isFirstIn) {  
  293.                 LatLng latLng = new LatLng(location.getLatitude(),  
  294.                         location.getLongitude());// 获取经纬度  
  295.                 MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng);  
  296.                 mBaiduMap.animateMapStatus(msu);  
  297.                 isFirstIn = false;  
  298.                 Toast.makeText(context, location.getAddrStr(),  
  299.                         Toast.LENGTH_SHORT).show();  
  300.                 <span style="color:#009900;">mPoiSearch  
  301.                         .searchNearby((new PoiNearbySearchOption())  
  302.                                 .location(latLng).keyword("快递").radius(3000)  
  303.                                 .pageNum(0));</span>  
  304.             }  
  305.         }  
  306.     }  
  307.   
  308.     private class MyPoiOverlay extends PoiOverlay {  
  309.   
  310.         public MyPoiOverlay(BaiduMap baiduMap) {  
  311.             super(baiduMap);  
  312.             // TODO Auto-generated constructor stub  
  313.         }  
  314.   
  315.     }  
  316.   
  317. }  
  318. </span>  

4、摇一摇

这个就更加简单了,主要是

【1】监听XYZ三个轴的加速度,onSensorChanged(SensorEvent event)

【2】handler异步处理事件

【3】shake_action();中用随机数代表触发时事件


[java]  view plain  copy
  1. <span style="font-family:Microsoft YaHei;font-size:14px;">package com.leftside;  
  2.   
  3. import android.annotation.SuppressLint;  
  4. import android.app.Activity;  
  5. import android.hardware.Sensor;  
  6. import android.hardware.SensorEvent;  
  7. import android.hardware.SensorEventListener;  
  8. import android.hardware.SensorManager;  
  9. import android.media.MediaPlayer;  
  10. import android.os.Bundle;  
  11. import android.os.Handler;  
  12. import android.os.Message;  
  13. import android.os.Vibrator;  
  14. import android.util.Log;  
  15. import android.view.View;  
  16. import android.widget.ImageView;  
  17. import android.widget.SeekBar;  
  18. import android.widget.TextView;  
  19.   
  20. import com.weimeijing.feigeshudi.R;  
  21.   
  22. public class Shake extends Activity {  
  23.     private SensorManager sensorManager;  
  24.     private Vibrator vibrator;  
  25.     ImageView iv;  
  26.     MediaPlayer mp;  
  27.     boolean isPlay = false;  
  28.     private static final String TAG = "TestSensorActivity";  
  29.     private static final int SENSOR_SHAKE = 10;  
  30.   
  31.     private TextView tv_shake1;  
  32.     private TextView tv_shake2;  
  33.   
  34.     @Override  
  35.     protected void onCreate(Bundle savedInstanceState) {  
  36.         super.onCreate(savedInstanceState);  
  37.         setContentView(R.layout.shake);  
  38.         mp = MediaPlayer.create(this, R.raw.shake);  
  39.         iv = (ImageView) findViewById(R.id.imageview);  
  40.         // 获取传感器管理服务  
  41.         sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);  
  42.         vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);  
  43.   
  44.         /* tv_shake1 = (TextView) findViewById(R.id.tv_shake1); */  
  45.         tv_shake2 = (TextView) findViewById(R.id.tv_shake2);  
  46.   
  47.     }  
  48.   
  49.   
  50.   
  51.     @Override  
  52.     protected void onResume() {  
  53.         super.onResume();  
  54.         if (sensorManager != null) {  
  55.             // 为系统的方向传感注册监听器  
  56.             sensorManager.registerListener(sensorEventListener,  
  57.                     sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),  
  58.                     SensorManager.SENSOR_DELAY_NORMAL);  
  59.         }  
  60.     }  
  61.   
  62.     @Override  
  63.     protected void onPause() {  
  64.         super.onPause();  
  65.         if (sensorManager != null) {  
  66.             // 取消监听器  
  67.             sensorManager.unregisterListener(sensorEventListener);  
  68.         }  
  69.         if (isPlay) {  
  70.             mp.stop();  
  71.             mp.release();  
  72.         }  
  73.     }  
  74.   
  75.     /* 
  76.      * 重力感应监听 
  77.      */  
  78.     private SensorEventListener sensorEventListener = new SensorEventListener() {  
  79.   
  80.         @Override  
  81.         public void onSensorChanged(SensorEvent event) {  
  82.             // 传感器信息改变时执行该方法  
  83.             float[] values = event.values;  
  84.             float x = values[0];// x轴方向的重力加速度,向右为正  
  85.             float y = values[1];// y轴方向的重力加速度,向前为正  
  86.             float z = values[2];// y轴方向的重力加速度,向前为正  
  87.             // 根据结果执行操作  
  88.             if (Math.abs(x) > 14 || Math.abs(y) > 16 || Math.abs(z) > 16) {  
  89.                 isPlay = true;  
  90.                 // mp.seekTo(0);  
  91.                 vibrator.vibrate(200);  
  92.                 // Handler 异步处理技术  
  93.                 Message msg = new Message();  
  94.                 msg.what = SENSOR_SHAKE;  
  95.                 //mp.start();// 加这个会死机?  
  96.                 handler.sendMessage(msg);  
  97.                 Log.i(TAG, "x轴方向的重力加速度" + x + ";y轴方向的重力加速度" + y + ";z轴方向的重力加速度"  
  98.                         + z);  
  99.             }  
  100.   
  101.         }  
  102.   
  103.         @Override  
  104.         public void onAccuracyChanged(Sensor sensor, int accuracy) {  
  105.   
  106.         }  
  107.     };  
  108.     Handler handler = new Handler() {  
  109.         @Override  
  110.         public void handleMessage(Message msg) {  
  111.             super.handleMessage(msg);  
  112.             //mp.start();// 加这个会死机?  
  113.             switch (msg.what) {  
  114.             case SENSOR_SHAKE:  
  115.                 int i = 0;  
  116.                 //手动延时  
  117.                 while (true) {  
  118.                     i++;  
  119.                     if (i == 800)  
  120.                         break;  
  121.                 }  
  122.                 shake_action();  
  123.                 break;  
  124.   
  125.             default:  
  126.                 break;  
  127.             }  
  128.         }  
  129.   
  130.         private void shake_action() {  
  131.             /* tv_shake1.setVisibility(View.VISIBLE); */  
  132.             int id = (int) (Math.random() * 13 + 1);  
  133.             switch (id) {  
  134.             case 1:  
  135.   
  136.                 tv_shake2.setText(R.string.shake1);  
  137.                 break;  
  138.             case 2:  
  139.                 tv_shake2.setText(R.string.shake2);  
  140.                 break;  
  141.             case 3:  
  142.                 tv_shake2.setText(R.string.shake3);  
  143.                 break;  
  144.             case 4:  
  145.                 tv_shake2.setText(R.string.shake4);  
  146.                 break;  
  147.             case 5:  
  148.                 tv_shake2.setText(R.string.shake5);  
  149.                 break;  
  150.             case 6:  
  151.                 tv_shake2.setText(R.string.shake6);  
  152.                 break;  
  153.             case 7:  
  154.                 tv_shake2.setText(R.string.shake7);  
  155.                 break;  
  156.             case 8:  
  157.                 tv_shake2.setText(R.string.shake8);  
  158.                 break;  
  159.             case 9:  
  160.                 tv_shake2.setText(R.string.shake9);  
  161.                 break;  
  162.             case 10:  
  163.                 tv_shake2.setText(R.string.shake10);  
  164.                 break;  
  165.             case 11:  
  166.                 tv_shake2.setText(R.string.shake11);  
  167.                 break;  
  168.             case 12:  
  169.                 tv_shake2.setText(R.string.shake12);  
  170.                 break;  
  171.             case 13:  
  172.                 tv_shake2.setText(R.string.shake13);  
  173.                 break;  
  174.   
  175.             default:  
  176.                 break;  
  177.             }  
  178.             tv_shake2.setVisibility(View.VISIBLE);  
  179.   
  180.         }  
  181.     };  
  182.   
  183. }  
  184. </span>  

5、知识总结

【1】slidingmenu_library开源控件的使用

【2】百度地图

【3】传感器

【4】handler的使用


转载:http://blog.csdn.net/xsf50717/article/details/47252581

目录
相关文章
|
26天前
|
移动开发 小程序 NoSQL
上门家政按摩H5小程序源码
1、服务器环境:CentOS7 + 宝塔 + Nginx + php 2、环境:PHP7.2+ MySQL5.6 3、安装扩展:fileinfo、redis
20 2
上门家政按摩H5小程序源码
|
8月前
|
小程序
【带源码】基于微信小程序的旅游订票旅游预订小程序酒店预订项目
重要的事情说三遍,可白嫖,可白嫖,可白嫖!!! 源码下载链接:docs.qq.com/doc/DYm5DSlBWZEplalBP 随着移动互联网的迅速发展,人们对于旅游信息获取和旅行订票的需求也逐渐增加。传统的旅游指南和订票方式往往不够便捷和灵活,而微信作为一种广泛使用的社交媒体平台,拥有巨大的用户群体和强大的社交属性,成为了传递信息和服务的重要渠道。
|
10月前
|
缓存 算法 数据挖掘
东郊到家系统程序开发预约上门软件功能
目前主流的按摩软件系统会有三个端口:用户端、技师端、商家端,以及管理后台。
|
网络协议 测试技术 Go
家庭收支软件需求和界面|学习笔记
快速学习家庭收支软件需求和界面
102 0
家庭收支软件需求和界面|学习笔记
好客租房175-获取当前小区被点击房源数据
好客租房175-获取当前小区被点击房源数据
87 0
好客租房175-获取当前小区被点击房源数据
J3
|
前端开发 数据库
快捷餐饮之店家后台厨艺秀实现
快捷餐饮之店家后台厨艺秀实现
J3
109 0
快捷餐饮之店家后台厨艺秀实现
J3
快捷餐饮之店家后台员工管理实现
快捷餐饮之店家后台员工管理实现
J3
89 0
快捷餐饮之店家后台员工管理实现
J3
快捷餐饮之店家后台系统管理实现
快捷餐饮之店家后台系统管理实现
J3
121 0
快捷餐饮之店家后台系统管理实现
|
供应链 API
在平台上添加发快递上门取件的功能-快递物流上门取件API对接
上门取件,是电商平台为寄件用户提供的通过一键下单到快递员,并在2小时上门取件的寄件服务。适用于散客在线寄件、电商退货上门取件等业务场景;通过API指令由系统自动将消息发送给物流公司和快递员,由快递员上门取货揽件与在线收款; 快递鸟上门预约取件api接口 解决寄件客户不用线下找快递员、不用苦苦等待,通过上门取件服务让客户可以轻松选择约定时间、地点完成寄件需求。
1638 0
在平台上添加发快递上门取件的功能-快递物流上门取件API对接
各种物流快递电子面单-Api接口(顺丰、快递鸟、菜鸟)
电子面单是一种通过热敏纸打印输出纸质物流面单的物流服务。通过热感应显示文字,打印速度比传统针式打印速度提升4~6倍。电子面单以接口形式嵌入到自己的系统、网站上,可以在自己的平台操作打印电子面单。电子面单样式: 对接接口各家对比快递电子面单接口:快递公司自己开发的电子面单服务, 商家使用必须快递公司上门做系统对接,使用一家快递则需要对接一次。