zoukankan      html  css  js  c++  java
  • 26 百度地图的使用

    案例一 显示百度地图

    package com.qf.sxy.day27_baidumap;
    
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    
    import com.baidu.mapapi.SDKInitializer;
    import com.baidu.mapapi.map.MapView;
    
    public class MainActivity extends AppCompatActivity {
    
        MapView mMapView = null;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //在使用SDK各组件之前初始化context信息,传入ApplicationContext
            //注意该方法要再setContentView方法之前实现
            SDKInitializer.initialize(getApplicationContext());
            setContentView(R.layout.activity_main);
            //获取地图控件引用
            mMapView = (MapView) findViewById(R.id.bmapView);
        }
    
        /**
         * 管理百度地图的生命周期
         */
        @Override
        protected void onDestroy() {
            super.onDestroy();
            //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
            mMapView.onDestroy();
        }
        @Override
        protected void onResume() {
            super.onResume();
            //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
            mMapView.onResume();
        }
        @Override
        protected void onPause() {
            super.onPause();
            //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
            mMapView.onPause();
        }
    }
    
    
    • 当然初始化代码可以写application
    SDKInitializer.initialize(getApplicationContext());
    • 例子
    package com.qf.sxy.day27_baidumap;
    
    import android.app.Application;
    
    import com.baidu.mapapi.SDKInitializer;
    
    /**
     * Created by sxy on 2016/9/27.
     *
     * 使用Application做全局初始化
     * note:必须在清单文件进行注册    android:name=".MyApplication"
     * 否则 写没写这个Application是没有作用
     */
    public class MyApplication extends Application {
    
        @Override
        public void onCreate() {
            super.onCreate();
            //在使用SDK各组件之前初始化context信息,传入ApplicationContext
            //注意该方法要再setContentView方法之前实现
            SDKInitializer.initialize(getApplicationContext());
    
        }
    }
    
    • 注意需要在清单文件注册
     <application
            android:name=".MyApplication"
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">

    案例二 覆盖物

    说明:在地图上某个点显示个图标或者View等

    package com.qf.sxy.day27_baidumap;
    
    import android.graphics.Color;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.widget.Button;
    
    import com.baidu.mapapi.map.BaiduMap;
    import com.baidu.mapapi.map.BitmapDescriptor;
    import com.baidu.mapapi.map.BitmapDescriptorFactory;
    import com.baidu.mapapi.map.InfoWindow;
    import com.baidu.mapapi.map.LogoPosition;
    import com.baidu.mapapi.map.MapView;
    import com.baidu.mapapi.map.Marker;
    import com.baidu.mapapi.map.MarkerOptions;
    import com.baidu.mapapi.map.OverlayOptions;
    import com.baidu.mapapi.model.LatLng;
    
    /**
     * 添加覆盖物
     * 步骤:
     * 1,获取Baidumap对象
     * 2,给Baidumap添加覆盖物  addOverlay
     * 3,给覆盖物添加点击监听
     */
    public class OverlayActivity extends AppCompatActivity {
    
    
        private MapView mapView;
        private BaiduMap baiduMap;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_overlay);
            mapView = ((MapView) findViewById(R.id.bmapView));
    
            mapView.setLogoPosition(LogoPosition.logoPostionRightBottom);
            //获取百度地图对象
            baiduMap = mapView.getMap();
    //        //地图类型   卫星
    //        baiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
    //        //MAP_TYPE_NONE 空白的
    //        baiduMap.setMapType(BaiduMap.MAP_TYPE_NONE);
            //普通的
    //        baiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
    //
    //        //开启交通图
    //        baiduMap.setTrafficEnabled(true);
    //
    //        //开启交通图
    //        baiduMap.setBaiduHeatMapEnabled(true);
    
            //获取图标
            BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher);
    
            //获取当前坐标
            final LatLng latLng = new LatLng(40.089597, 116.419385);
    
            //获取OverlayOptions 对象   设置图标
            OverlayOptions options= new MarkerOptions().icon(bitmapDescriptor).position(latLng).title("天通苑");
            //添加覆盖物
            baiduMap.addOverlay(options);
    
            //覆盖物的点击监听
            baiduMap.setOnMarkerClickListener(new BaiduMap.OnMarkerClickListener() {
                @Override
                public boolean onMarkerClick(Marker marker) {
    
                    Button btn = new Button(OverlayActivity.this);
                    btn.setBackgroundColor(Color.WHITE);
                    btn.setText(marker.getTitle());
    
                    BitmapDescriptor descriptor = BitmapDescriptorFactory.fromView(btn);
                    /**
                     * 参数1:图片 当然这也可以放View等
                     * 参数2:坐标点
                     * 参数3:y轴的偏移量
                     * 参数4:提示的监听
                     */
                    InfoWindow infoWindow = new InfoWindow(descriptor, latLng, -50, new InfoWindow.OnInfoWindowClickListener() {
                        @Override
                        public void onInfoWindowClick() {
                            //隐藏
                            baiduMap.hideInfoWindow();
                        }
                    });
                    //设置提示
                    baiduMap.showInfoWindow(infoWindow);
                    return false;
                }
            });
    
        }
    }
    

    案例三 路线规划

    说明:制定两个点的的路线图

    package com.qf.sxy.day27_baidumap;
    
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.util.Log;
    
    import com.baidu.mapapi.map.BaiduMap;
    import com.baidu.mapapi.map.MapView;
    import com.baidu.mapapi.search.route.BikingRouteResult;
    import com.baidu.mapapi.search.route.DrivingRouteLine;
    import com.baidu.mapapi.search.route.DrivingRoutePlanOption;
    import com.baidu.mapapi.search.route.DrivingRouteResult;
    import com.baidu.mapapi.search.route.OnGetRoutePlanResultListener;
    import com.baidu.mapapi.search.route.PlanNode;
    import com.baidu.mapapi.search.route.RoutePlanSearch;
    import com.baidu.mapapi.search.route.TransitRouteResult;
    import com.baidu.mapapi.search.route.WalkingRouteResult;
    import com.qf.sxy.day27_baidumap.utils.DrivingRouteOverlay;
    
    import java.util.List;
    
    /**
     * 路线规划步骤:
     * 1,获取路线规划对象RoutePlanSearch
     * 2,对路线规划对象进行监听
     * 3,开启路线查询(有四种)
     * 4,在监听中 进行处理  获取路线覆盖物 将其添加到地图  可以进行点击监听节点
     */
    public class RouteActivity extends AppCompatActivity {
    
        private MapView mMapView;
        private BaiduMap mBaiduMap;
        //路线规划的对象
        private RoutePlanSearch mRoutePlanSearch;
    
        private DrivingRouteLine drivingRouteLine;//这个路线展示到Map
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_route);
    
            mMapView = ((MapView) findViewById(R.id.bmapView));
            //获取百度地图对象
            mBaiduMap = mMapView.getMap();
            //获取路线规划对象
            mRoutePlanSearch = RoutePlanSearch.newInstance();
    
            //对路线规划进行监听
            mRoutePlanSearch.setOnGetRoutePlanResultListener(new OnGetRoutePlanResultListener() {
                @Override
                public void onGetWalkingRouteResult(WalkingRouteResult walkingRouteResult) {
                    //走路的规划
                }
    
                @Override
                public void onGetTransitRouteResult(TransitRouteResult transitRouteResult) {
                    //公交的规划
                }
    
                @Override
                public void onGetDrivingRouteResult(DrivingRouteResult drivingRouteResult) {
                    //自己开车
                    //获取所有的路线
                    List<DrivingRouteLine> lines = drivingRouteResult.getRouteLines();
                    if(lines!=null&&lines.size()>0){//说明有路线
                        Log.e("AAA","==="+lines.size());
                        drivingRouteLine = lines.get(0);//这里我们只获取其中一条路径
                    }else{
                        Log.e("AAA","==没有路==");
                    }
    
                    //将路线展示到地图  以覆盖物---这类给sample类帮我们画出 开头和结尾还有中间的路
                    MyOverlay myOverlay = new MyOverlay(mBaiduMap);
                    //将开车的路线  给覆盖物
                    myOverlay.setData(drivingRouteLine);
                    //对路线覆盖物监听 myOverlay内部实现了new BaiduMap.OnMarkerClickListener()方法
                    //监听地图上的箭头图片 (图片每次有转向路口都会有个箭头图片 点击图片显示相应的转向提示)
                    mBaiduMap.setOnMarkerClickListener(myOverlay);
                    //将覆盖物添加到地图
                    myOverlay.addToMap();
    
    
                }
    
                @Override
                public void onGetBikingRouteResult(BikingRouteResult bikingRouteResult) {
                    //骑自行车行
                }
            });
    
            //开启路线查询
            mRoutePlanSearch.drivingSearch(new DrivingRoutePlanOption().
                    from(PlanNode.withCityNameAndPlaceName("北京","北京科技职业学院")).
                    to(PlanNode.withCityNameAndPlaceName("北京","北京西站")));
        }
    
        //开车的覆盖物 此类继承是百度sample中的类
        public class MyOverlay extends DrivingRouteOverlay{
    
            /**
             * 构造函数
             *
             * @param baiduMap 该DrivingRouteOvelray引用的 BaiduMap
             */
            public MyOverlay(BaiduMap baiduMap) {
                super(baiduMap);
            }
            //路线节点的 点击监听
            @Override
            public boolean onRouteNodeClick(int i) {
                //监听地图上的箭头图片 (图片每次有转向路口都会有个箭头图片 点击图片显示相应的转向提示)
                //获取所有的节点
                List<DrivingRouteLine.DrivingStep> lists = drivingRouteLine.getAllStep();
                DrivingRouteLine.DrivingStep step =   lists.get(i);
                Log.e("AAAA","==>"+step.getInstructions());
                return super.onRouteNodeClick(i);
            }
        }
    }
    


    • 示例图:

    说明:图中箭头就是监听事件
    这里写图片描述

    案例四 POI搜索 商铺

    • POI是“Point of Interest”的缩写,中文可以翻译为“兴趣点”。在地理信息系统中,一个POI可以是一栋房子、一个商铺、一个邮筒、一个公交站等。
    package com.qf.sxy.day27_baidumap;
    
    import android.content.Intent;
    import android.graphics.Color;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.text.TextUtils;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    
    import com.baidu.mapapi.map.BaiduMap;
    import com.baidu.mapapi.map.BitmapDescriptor;
    import com.baidu.mapapi.map.BitmapDescriptorFactory;
    import com.baidu.mapapi.map.InfoWindow;
    import com.baidu.mapapi.map.MapView;
    import com.baidu.mapapi.search.core.PoiInfo;
    import com.baidu.mapapi.search.poi.OnGetPoiSearchResultListener;
    import com.baidu.mapapi.search.poi.PoiCitySearchOption;
    import com.baidu.mapapi.search.poi.PoiDetailResult;
    import com.baidu.mapapi.search.poi.PoiDetailSearchOption;
    import com.baidu.mapapi.search.poi.PoiIndoorResult;
    import com.baidu.mapapi.search.poi.PoiResult;
    import com.baidu.mapapi.search.poi.PoiSearch;
    import com.qf.sxy.day27_baidumap.utils.PoiOverlay;
    
    import java.util.List;
    
    /**
     * 1,获取对象
     * 2,设置监听
     * 3,开启搜索
     */
    public class PoiSearchActivity extends AppCompatActivity {
    
    
        private MapView mMapView;
        private EditText mEtKey;
    
        private BaiduMap mBaiduMap ;
    
        private PoiSearch mPoiSearch;//Poi检索的对象
    
        private PoiInfo poiInfo;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_poi_search);
            mMapView = ((MapView) findViewById(R.id.bmapView));
            mEtKey = ((EditText) findViewById(R.id.et_key));
            mBaiduMap = mMapView.getMap();
        }
    
        //点击按钮开始搜索
        public void findClick(View view) {
            String keyStr = mEtKey.getText().toString().trim();
            if(TextUtils.isEmpty(keyStr)){
                Log.e("AAA","当前搜索的关键字为null");
               return;
            }
            //实例化检索对象
            mPoiSearch = PoiSearch.newInstance();
    
            //Poi搜索的监听
            mPoiSearch.setOnGetPoiSearchResultListener(new OnGetPoiSearchResultListener() {
                @Override
                public void onGetPoiResult(PoiResult poiResult) {
                    //Poi搜索的结果
                    //清除之前的数据
                    mBaiduMap.clear();
                    MyPoiOverlay myPoiOverlay = new MyPoiOverlay(mBaiduMap);
                    myPoiOverlay.setData(poiResult);
                    mBaiduMap.setOnMarkerClickListener(myPoiOverlay);
                    myPoiOverlay.addToMap();
    
                }
    
                @Override
                public void onGetPoiDetailResult(PoiDetailResult poiDetailResult) {
                    //得到结果的详情
                    Intent intent = new Intent(PoiSearchActivity.this,PoidetailActivity.class);
                    intent.putExtra("url",poiDetailResult.getDetailUrl());
                    startActivity(intent);
    
                }
    
                @Override
                public void onGetPoiIndoorResult(PoiIndoorResult poiIndoorResult) {
                    //获取室内的结果
    
                }
            });
            //开启搜索    搜索所在的城市    关键字
            mPoiSearch.searchInCity(new PoiCitySearchOption().city("北京").keyword(keyStr));
    
    
    //        LatLng llC = new LatLng(39.639723, 118.425541);
    //        LatLng llD = new LatLng(39.906965, 118.401394);
            //坐标点的附近
    //        mPoiSearch.searchNearby(new PoiNearbySearchOption().location(llC).keyword())
            //区域  设置俩个坐标点  左上 右下
    //        LatLngBounds latLngBounds = new LatLngBounds.Builder().include(llC).include(llD).build();
    //        mPoiSearch.searchInBound(new PoiBoundSearchOption().bound(latLngBounds))
        }
    
    
        //Poi搜索的覆盖物 此类事sample
        class MyPoiOverlay extends PoiOverlay{
    
            /**
             * 构造函数
             *
             * @param baiduMap 该 PoiOverlay 引用的 BaiduMap 对象
             */
            public MyPoiOverlay(BaiduMap baiduMap) {
                super(baiduMap);
            }
    
            //点击覆盖物的监听
            @Override
            public boolean onPoiClick(int i) {
                //获取Poi所有节点
                List<PoiInfo> list = getPoiResult().getAllPoi();
                //获取点击的节点
                poiInfo = list.get(i);
    
                Button button = new Button(getApplicationContext());
                button.setBackgroundColor(Color.GREEN);
                button.setText(poiInfo.name);
                BitmapDescriptor descriptor = BitmapDescriptorFactory.fromView(button);
    
                InfoWindow infoWindow = new InfoWindow(descriptor, poiInfo.location, -100, new InfoWindow.OnInfoWindowClickListener() {
                    @Override
                    public void onInfoWindowClick() {
                        //根据Uid搜索详情 此时回调mPoiSearch的onGetPoiDetailResult方法
                        mPoiSearch.searchPoiDetail(new PoiDetailSearchOption().poiUid(poiInfo.uid));
                        mBaiduMap.hideInfoWindow();
                    }
                });
                mBaiduMap.showInfoWindow(infoWindow);
    
                return super.onPoiClick(i);
            }
        }
    }
    
    package com.qf.sxy.day27_baidumap;
    
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.webkit.WebView;
    import android.webkit.WebViewClient;
    
    public class PoidetailActivity extends AppCompatActivity {
    
        private WebView mWebView;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_poidetail);
            mWebView = ((WebView) findViewById(R.id.webView));
            mWebView.getSettings().setJavaScriptEnabled(true);
            String url = getIntent().getStringExtra("url");
            mWebView.setWebViewClient(new WebViewClient() {
                //重写了 shouldOverrideUrlLoading()方法。这就表明当需要从一个网页跳转到另一个网页时,我们希望目标网页仍然在当前 WebView 中显示,而不是打开系统浏览器
                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    view.loadUrl(url); // 根据传入的参数再去加载新的网页
                    return true; // 表示当前WebView可以处理打开新网页的请求,不用借助系统浏览器
                }
            });
            mWebView.loadUrl(url);
        }
    
    }
    

    案例五 POI 查找公交路线

    package com.qf.sxy.day27_baidumap;
    
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.view.View;
    import android.widget.EditText;
    
    import com.baidu.mapapi.map.BaiduMap;
    import com.baidu.mapapi.map.MapView;
    import com.baidu.mapapi.search.busline.BusLineResult;
    import com.baidu.mapapi.search.busline.BusLineSearch;
    import com.baidu.mapapi.search.busline.BusLineSearchOption;
    import com.baidu.mapapi.search.busline.OnGetBusLineSearchResultListener;
    import com.baidu.mapapi.search.core.SearchResult;
    import com.baidu.mapapi.search.poi.OnGetPoiSearchResultListener;
    import com.baidu.mapapi.search.poi.PoiCitySearchOption;
    import com.baidu.mapapi.search.poi.PoiDetailResult;
    import com.baidu.mapapi.search.poi.PoiIndoorResult;
    import com.baidu.mapapi.search.poi.PoiResult;
    import com.baidu.mapapi.search.poi.PoiSearch;
    import com.qf.sxy.day27_baidumap.utils.BusLineOverlay;
    
    public class BusLineSearchActivity extends AppCompatActivity {
    
        private MapView mapView;
        private BaiduMap baiduMap;
        private EditText etBus;
    
    
        private PoiSearch poiSearch;
        private BusLineSearch busLineSearch;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_bus_line_search);
            mapView = ((MapView) findViewById(R.id.bmapView));
            baiduMap = mapView.getMap();
            etBus = ((EditText) findViewById(R.id.et_bus));
    
            busLineSearch= BusLineSearch.newInstance();
            busLineSearch.setOnGetBusLineSearchResultListener(new OnGetBusLineSearchResultListener() {
                @Override
                public void onGetBusLineResult(BusLineResult busLineResult) {
                    if(busLineResult!=null&&busLineResult.error == SearchResult.ERRORNO.NO_ERROR){
                        //删除原来的覆盖物
                        baiduMap.clear();
                        //一个显示公交站点类
                        BusLineOverlay overlay = new BusLineOverlay(baiduMap);
                        overlay.setData(busLineResult);
                        overlay.addToMap();
    
                    }
                }
            });
    
            //poi
            poiSearch = PoiSearch.newInstance();
            poiSearch.setOnGetPoiSearchResultListener(new OnGetPoiSearchResultListener() {
                @Override
                public void onGetPoiResult(PoiResult poiResult) {
                    if(poiResult!=null&&poiResult.error== SearchResult.ERRORNO.NO_ERROR){
                        //可能查到多个 这里我们只取第一个
                        String uid = poiResult.getAllPoi().get(0).uid;
                        busLineSearch.searchBusLine(new BusLineSearchOption().city("北京").uid(uid));
                    }
    
                }
    
                @Override
                public void onGetPoiDetailResult(PoiDetailResult poiDetailResult) {
    
                }
    
                @Override
                public void onGetPoiIndoorResult(PoiIndoorResult poiIndoorResult) {
    
                }
            });
        }
    
        public void searchClick(View view) {
    
            //开启搜索   城市   关键字  公交号 476
            poiSearch.searchInCity(new PoiCitySearchOption().city("北京").keyword(etBus.getText().toString().trim()));
        }
    }
    

    案例六 定位

    环境搭建

    注意安卓6.0的运行时权限
    安卓6.0运行时权限

    所需:
    liblocSDK6a.so
    locSDK_6.13.jar

    package com.qf.sxy.day27_baidumap;
    
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.util.Log;
    
    import com.baidu.location.BDLocation;
    import com.baidu.location.BDLocationListener;
    import com.baidu.location.LocationClient;
    import com.baidu.location.LocationClientOption;
    import com.baidu.mapapi.map.BaiduMap;
    import com.baidu.mapapi.map.BitmapDescriptor;
    import com.baidu.mapapi.map.BitmapDescriptorFactory;
    import com.baidu.mapapi.map.MapView;
    import com.baidu.mapapi.map.MarkerOptions;
    import com.baidu.mapapi.map.OverlayOptions;
    import com.baidu.mapapi.model.LatLng;
    
    public class LocationActivity extends AppCompatActivity {
    
        private MapView mapView;
        private BaiduMap baiduMap;
    
        //定位对象
        private LocationClient locationClient;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_location);
            mapView = ((MapView) findViewById(R.id.bmapView));
            baiduMap = mapView.getMap();
    
            locationClient = new LocationClient(LocationActivity.this);
            //对定位的设置
            LocationClientOption option = new LocationClientOption();
            /**
             * LocationClientOption.LocationMode.Battery_Saving:低功耗定位  不用GPS  (wifi  基站)
             *
             * LocationClientOption.LocationMode.Hight_Accuracy:高精度定位  全开GPS  wifi  基站
             *
             * LocationClientOption.LocationMode.Device_Sensors  仅仅使用设备 GPS    不支持室内
             */
            option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);
            /**
             * bd09ll:百度经纬度坐标
             * bd09:墨卡托坐标
             * gcjo2:国家测量局坐标
             */
            option.setCoorType("bd09ll");
            //设置定位间隔时间 每隔两秒记录一次位置
            option.setScanSpan(1000*2);
            //设置定位超出时间
            option.setTimeOut(1000*10);
            //是否需要得到地址
            option.setIsNeedAddress(true);
            //是否设置手机 机头方向
            option.setNeedDeviceDirect(true);
            //2给定位对象进行设置
            locationClient.setLocOption(option);
    
    
            //3监听
            locationClient.registerLocationListener(new BDLocationListener() {
                @Override
                public void onReceiveLocation(BDLocation bdLocation) {
                    //获取坐标 bdLocation.getLatitude()纬度 bdLocation.getLongitude()经度
                    LatLng latLng = new LatLng(bdLocation.getLatitude(),bdLocation.getLongitude());
                    BitmapDescriptor descriptor = BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher);
                    OverlayOptions options = new MarkerOptions().position(latLng).icon(descriptor).title("当前位置");
                    baiduMap.addOverlay(options);
                    Log.e("fmy","位置"+bdLocation.getLatitude());
                }
            });
    
            //4启动
            locationClient.start();//开启
            locationClient.requestLocation();//发起请求
    
        }
    }
    
  • 相关阅读:
    javascript往textarea追加内容
    Java之Comparable接口和Comparator接口
    Java之iterator迭代器和iterable接口
    Java之hashSet实现引用类型的禁止重复功能
    Java之获取系统属性
    Java之String,StringBuffer,StringBuilder类
    Java之sleep和wait的区别
    Android开发之ADT中无Annotation Processin的解决办法
    Android开发之注解式框架ButterKnife在ADT中的设置
    Android开发UI之Action Bar
  • 原文地址:https://www.cnblogs.com/muyuge/p/6152172.html
Copyright © 2011-2022 走看看