Android开发 PopupWindow弹窗调用第三方地图(百度,高德)实现导航功能
博客描述:后台返回地点的经纬度在地图上进行描点,点击导航弹出PopupWindow进行选择地图操作,如果手机中没有安装地图,提示没有,否则传值调起地图进行导航操作
看一下实现的效果,没图说再多都白搭
这里在打开第三方的时候可以不用传当前位置的经纬度,当你打开App时默认为当前位置为起点,只设置终点经纬度就可以,文档上也都有说明,
如果你有定位获取的经纬度,也可以拼接上,注意不要拼接错,还要注意的百度和高德地图使用的经纬度不能用同一个,需要转换,百度地图获
取到的经纬度需要通过方法处理成高德地图可以使用的,反之同理。
另外附上文档地址:
百度地图:http://lbsyun.baidu.com/index.php?title=uri/api/android
高德地图:http://lbs.amap.com/api/amap-mobile/guide/android/route
腾讯地图后续有时间就添加上。
看完效果图再看具体的实现方法
先看实现PopupWindow的实现
PopupWindow的布局文件
map_navgation_sheet.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
android:orientation="vertical"> <TextView
android:id="@+id/baidu_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="20px"
android:layout_marginRight="20px"
android:layout_marginTop="35px"
android:background="@drawable/shape_map_navagation_sheet_bg"
android:gravity="center"
android:text="百度地图"
android:textColor="#224E8F" /> <!-- <View
android:layout_width="match_parent"
android:layout_height="1px"
android:background="#cdcdcd" />--> <TextView
android:id="@+id/gaode_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="20px"
android:layout_marginRight="20px"
android:layout_marginTop="10px"
android:background="@drawable/shape_map_navagation_sheet_bg"
android:gravity="center"
android:text="高德地图"
android:textColor="#224E8F" /> <!-- <View
android:layout_width="match_parent"
android:layout_height="1px"
android:background="#cdcdcd" />--> <TextView
android:id="@+id/tencent_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:paddingBottom="30px"
android:paddingTop="30px"
android:text="腾讯地图"
android:visibility="gone" /> <!--<View
android:layout_width="match_parent"
android:layout_height="1px"
android:background="#cdcdcd" />--> <!--
android:paddingBottom="30px"-->
<TextView
android:id="@+id/cancel_btn2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="40px"
android:layout_marginLeft="20px"
android:layout_marginRight="20px"
android:layout_marginTop="15px"
android:background="@drawable/shape_map_navagation_sheet_bg"
android:gravity="center"
android:text="取消"
android:textColor="#224E8F" />
</LinearLayout>
PopupWindow弹出方法:
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
private void dhPopupView() {
// : 2016/5/17 构建一个popupwindow的布局
// View popupView = ShopDetailsMap.this.getLayoutInflater().inflate(R.layout.map_navagation_sheet, null);
View popupView = getLayoutInflater().inflate(R.layout.map_navagation_sheet, null);
// Point position = getNavigationBarSize(mContext); TextView baidu_btn = popupView.findViewById(R.id.baidu_btn);
TextView gaode_btn = popupView.findViewById(R.id.gaode_btn);
TextView tencent_btn = popupView.findViewById(R.id.tencent_btn);
TextView cancel_btn2 = popupView.findViewById(R.id.cancel_btn2); baidu_btn.setOnClickListener(this);
gaode_btn.setOnClickListener(this);
tencent_btn.setOnClickListener(this);
cancel_btn2.setOnClickListener(this);
// : 2016/5/17 创建PopupWindow对象,指定宽度和高度
// window = new PopupWindow(popupView, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
window = new PopupWindow(); window.setContentView(popupView);
//设置宽高
window.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);
window.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT); // : 2016/5/17 设置动画
// window.setAnimationStyle(R.style.popup_window_anim);
// : 2016/5/17 设置背景颜色
window.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#88323232")));
// : 2016/5/17 设置可以获取焦点
window.setFocusable(true);
// : 2016/5/17 设置可以触摸弹出框以外的区域
window.setOutsideTouchable(true);
// :更新popupwindow的状态
window.update();
window.setClippingEnabled(false);
// int windowPos[] = calculatePopWindowPos(view, windowContentViewRoot);
// window.showAtLocation(popupView,Gravity.BOTTOM,);
// window.showAsDropDown(popupView, Gravity.BOTTOM, 0, 0);
Rect rect = new Rect();
getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);
int winHeight = getWindow().getDecorView().getHeight();
window.showAtLocation(popupView, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, winHeight - rect.bottom);
// window.showAsDropDown(btnPopup, 0, 20);
/* if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
// window.showAsDropDown(this.getWindow().getDecorView(), Gravity.BOTTOM, 0, 0);
}*/
}
检测是否安装了第三方应用
/*检测应用是否安装*/
private boolean isAvilible(Context context, String packageName) {
final PackageManager packageManager = context.getPackageManager();//获取packagemanager
List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);//获取所有已安装程序的包信息
List<String> pName = new ArrayList<String>();//用于存储所有已安装程序的包名
//从pinfo中将包名字逐一取出,压入pName list中
if (pinfo != null) {
for (int i = 0; i < pinfo.size(); i++) {
String pn = pinfo.get(i).packageName;
pName.add(pn);
}
}
return pName.contains(packageName);//判断pName中是否有目标程序的包名,有TRUE,没有FALSE
}
调用百度地图方法
/*百度地图*/
public void baiduMap() {
if (isAvilible(this, "com.baidu.BaiduMap")) {//传入指定应用包名
Intent il = new Intent();
il.setData(Uri.parse("baidumap://map/direction?destination=" + lng + "," + lat + "&mode=driving"));
startActivity(il);
} else {//未安装
//market为路径,id为包名
//显示手机上所有的market商店
Toast.makeText(this, "您尚未安装百度地图", Toast.LENGTH_LONG).show();
//显示手机上所有的market商店
Uri uri = Uri.parse("market://details?id=com.baidu.BaiduMap");
intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
} window.dismiss(); }
调用高德地图方法
/*高德地图*/
private void gaodeMap() { if (isAvilible(this, "com.autonavi.minimap")) {//传入指定应用包名
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setPackage("com.autonavi.minimap");
try {
// intent = Intent.getIntent("amapuri://route/plan/?sid=BGVIS1&slat=39.92848272&slon=116.39560823&sname=A&did=BGVIS2&dlat=39.98848272&dlon=116.47560823&dname=B&dev=0&t=0");
intent = Intent.getIntent("amapuri://route/plan/?dlat=" + lng + "&dlon=" + lat + "&d&dev=0&t=0");
startActivity(intent);
} catch (URISyntaxException e) {
e.printStackTrace();
}
} else {//未安装
//market为路径,id为包名
//显示手机上所有的market商店
Toast.makeText(this, "您尚未安装高德地图", Toast.LENGTH_LONG).show();
Uri uri = Uri.parse("market://details?id=com.autonavi.minimap");
intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
window.dismiss();
}
注意:代码中的lat和lng是后台传递过来的经纬度,百度和高德使用的时候注意放置的位置。
下面贴总的代码
/**
* Created by dingchao on 2018/3/12.
*/ import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.Color;
import android.graphics.Rect;
import android.graphics.drawable.ColorDrawable;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.annotation.RequiresApi;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ZoomControls; import com.baidu.mapapi.SDKInitializer;
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.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MarkerOptions;
import com.baidu.mapapi.map.OverlayOptions;
import com.baidu.mapapi.model.LatLng;import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.List;/**
* 商铺详情查看地图的时候显示
*/
public class ShopDetailsMap extends BaseActivity implements View.OnClickListener { private MapView mMapView = null;
private BaiduMap mBaiduMap = null;
private BitmapDescriptor bitmapDescriptor;
private ImageView iv_map_return; private Intent intent;
private String lat;
private String lng;
private String shopName;
private String shopAddress;
PopupWindow window; /*定位*/ @RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
intent = getIntent();
lat = intent.getStringExtra("lat");
lng = intent.getStringExtra("lng");
shopName = intent.getStringExtra("shopName");
shopAddress = intent.getStringExtra("shopAddress");
//在使用SDK各组件之前初始化context信息,传入ApplicationContext
//注意该方法要再setContentView方法之前实现
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.shop_details_map); iv_map_return = (ImageView) findViewById(R.id.iv_map_return);
iv_map_return.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
}); /*显示信息*/
//infowindow中的布局
/*TextView tv = new TextView(ShopDetailsMap.this);
tv.setBackgroundResource(R.mipmap.maptextbg);
tv.setPadding(20, 10, 20, 20);
tv.setTextColor(android.graphics.Color.WHITE);
tv.setText("商铺名称" + "\n" + "北京市北京南站附近");
tv.setGravity(Gravity.LEFT);*/ View view1 = ViewGroup.inflate(ShopDetailsMap.this, R.layout.activity_shop_detail_map, null);
TextView textView1 = view1.findViewById(R.id.tv_shop_details_map_text1);
TextView textView2 = view1.findViewById(R.id.tv_shop_details_map_text2); textView1.setText(shopName);
textView2.setText(shopAddress); // bitmapDescriptor = BitmapDescriptorFactory.fromView(tv);
bitmapDescriptor = BitmapDescriptorFactory.fromView(view1); //显示infowindow,-47是偏移量,使infowindow向上偏移,不会挡住marker
//获取地图控件引用
mMapView = (MapView) findViewById(R.id.bmapView);
LatLng llText = new LatLng(Double.parseDouble(lng), Double.parseDouble(lat));
// InfoWindow infoWindow = new InfoWindow(bitmapDescriptor, llText, -47, null);////不可触发点击
InfoWindow infoWindow = new InfoWindow(bitmapDescriptor, llText, -47, new InfoWindow.OnInfoWindowClickListener() {//可触发点击
@Override
public void onInfoWindowClick() {
// Toast.makeText(ShopDetailsMap.this, "被点击", Toast.LENGTH_SHORT).show();
dhPopupView();
}
}); //在地图上添加该文字对象并显示
//获取地图控件引用*/
mMapView = (MapView) findViewById(R.id.bmapView);
mBaiduMap = mMapView.getMap();
mBaiduMap.showInfoWindow(infoWindow);
/*这里重点讲解zoomBy后面的那个浮点型变量
大家知道百度地图一共有{"10米","20米","50米","100米","200米","500米","1千米","2千米","5千米",
"10千米","20千米","25千米","50千米","100千米","200千米","500千米","1000千米","2000千米"}*/
MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.zoomBy(3);
mBaiduMap.setMapStatus(MapStatusUpdateFactory.newLatLng(llText));//设置定位的位置在屏幕的中间位置
mBaiduMap.animateMapStatus(mapStatusUpdate);
//构建Marker图标,设置位置圆点
BitmapDescriptor bitmap = BitmapDescriptorFactory
.fromResource(R.mipmap.mapdian);
//构建MarkerOption,用于在地图上添加Marker OverlayOptions option = new MarkerOptions()
.position(llText)
.icon(bitmap); // 隐藏logo
View child = mMapView.getChildAt(1);
if (child != null && (child instanceof ImageView || child instanceof ZoomControls)) {
child.setVisibility(View.INVISIBLE);
}
//在地图上添加Marker,并显示
mBaiduMap.addOverlay(option); // mBaiduMap.addOverlay(option);
// mBaiduMap.addOverlay(textOption);
} // @RequiresApi(api = Build.VERSION_CODES.KITKAT)
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
private void dhPopupView() {
// : 2016/5/17 构建一个popupwindow的布局
// View popupView = ShopDetailsMap.this.getLayoutInflater().inflate(R.layout.map_navagation_sheet, null);
View popupView = getLayoutInflater().inflate(R.layout.map_navagation_sheet, null);
// Point position = getNavigationBarSize(mContext); TextView baidu_btn = popupView.findViewById(R.id.baidu_btn);
TextView gaode_btn = popupView.findViewById(R.id.gaode_btn);
TextView tencent_btn = popupView.findViewById(R.id.tencent_btn);
TextView cancel_btn2 = popupView.findViewById(R.id.cancel_btn2); baidu_btn.setOnClickListener(this);
gaode_btn.setOnClickListener(this);
tencent_btn.setOnClickListener(this);
cancel_btn2.setOnClickListener(this);
// : 2016/5/17 创建PopupWindow对象,指定宽度和高度
// window = new PopupWindow(popupView, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
window = new PopupWindow(); window.setContentView(popupView);
//设置宽高
window.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);
window.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT); // : 2016/5/17 设置动画
// window.setAnimationStyle(R.style.popup_window_anim);
// : 2016/5/17 设置背景颜色
window.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#88323232")));
// : 2016/5/17 设置可以获取焦点
window.setFocusable(true);
// : 2016/5/17 设置可以触摸弹出框以外的区域
window.setOutsideTouchable(true);
// :更新popupwindow的状态
window.update();
window.setClippingEnabled(false);
// int windowPos[] = calculatePopWindowPos(view, windowContentViewRoot);
// window.showAtLocation(popupView,Gravity.BOTTOM,);
// window.showAsDropDown(popupView, Gravity.BOTTOM, 0, 0);
Rect rect = new Rect();
getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);
int winHeight = getWindow().getDecorView().getHeight();
window.showAtLocation(popupView, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, winHeight - rect.bottom);
// window.showAsDropDown(btnPopup, 0, 20);
/* if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
// window.showAsDropDown(this.getWindow().getDecorView(), Gravity.BOTTOM, 0, 0);
}*/
} /*百度地图*/
public void baiduMap() {
if (isAvilible(this, "com.baidu.BaiduMap")) {//传入指定应用包名
Intent il = new Intent();
il.setData(Uri.parse("baidumap://map/direction?destination=" + lng + "," + lat + "&mode=driving"));
startActivity(il);
} else {//未安装
//market为路径,id为包名
//显示手机上所有的market商店
Toast.makeText(this, "您尚未安装百度地图", Toast.LENGTH_LONG).show();
Uri uri = Uri.parse("market://details?id=com.baidu.BaiduMap");
intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
window.dismiss();
} /*高德地图*/
private void gaodeMap() { if (isAvilible(this, "com.autonavi.minimap")) {//传入指定应用包名
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setPackage("com.autonavi.minimap");
try {
// intent = Intent.getIntent("amapuri://route/plan/?sid=BGVIS1&slat=39.92848272&slon=116.39560823&sname=A&did=BGVIS2&dlat=39.98848272&dlon=116.47560823&dname=B&dev=0&t=0");
intent = Intent.getIntent("amapuri://route/plan/?dlat=" + lng + "&dlon=" + lat + "&d&dev=0&t=0");
startActivity(intent);
} catch (URISyntaxException e) {
e.printStackTrace();
}
} else {//未安装
//market为路径,id为包名
//显示手机上所有的market商店
Toast.makeText(this, "您尚未安装高德地图", Toast.LENGTH_LONG).show();
Uri uri = Uri.parse("market://details?id=com.autonavi.minimap");
intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
window.dismiss();
} /*检测应用是否安装*/
private boolean isAvilible(Context context, String packageName) {
final PackageManager packageManager = context.getPackageManager();//获取packagemanager
List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);//获取所有已安装程序的包信息
List<String> pName = new ArrayList<String>();//用于存储所有已安装程序的包名
//从pinfo中将包名字逐一取出,压入pName list中
if (pinfo != null) {
for (int i = 0; i < pinfo.size(); i++) {
String pn = pinfo.get(i).packageName;
pName.add(pn);
}
}
return pName.contains(packageName);//判断pName中是否有目标程序的包名,有TRUE,没有FALSE
} @Override
public void onClick(View view) {
switch (view.getId()) {
case baidu_btn:
// Toast.makeText(this, "baidu", Toast.LENGTH_SHORT).show();
baiduMap();
break;
case R.id.gaode_btn:
// Toast.makeText(this, "gaode", Toast.LENGTH_SHORT).show();
gaodeMap();
break;
case R.id.tencent_btn:
// Toast.makeText(this, "tengxun", Toast.LENGTH_SHORT).show();
break;
case R.id.cancel_btn2:
// Toast.makeText(this, "quxiao", Toast.LENGTH_SHORT).show();
if (window != null) {
window.dismiss();
}
break;
}
} @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();
} /**
* 启动百度App进行导航
*
* @param address 目的地
* @param lat 必填 纬度
* @param lon 必填 经度
*/
public static void goToBaiduActivity(Context context, String address, double lat, double lon) {
double[] doubles = gcj02_To_Bd09(lat, lon);
//启动路径规划页面
Intent naviIntent = new Intent("android.intent.action.VIEW", android.net.Uri.parse("baidumap://map/direction?origin=" + doubles[0] + "," + doubles[1] + "&destination=" + address + "&mode=driving"));
context.startActivity(naviIntent);
} /**
* 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法 将 GCJ-02 坐标转换成 BD-09 坐标
*
* @param lat
* @param lon
*/
public static double[] gcj02_To_Bd09(double lat, double lon) {
double x = lon, y = lat;
// double z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi);
double z = Math.sqrt(x * x + y * y) + 0.00002;
// double theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi);
double theta = Math.atan2(y, x) + 0.000003;
double tempLat = z * Math.sin(theta) + 0.006;
double tempLon = z * Math.cos(theta) + 0.0065;
double[] gps = {tempLat, tempLon};
return gps;
} }
以上就是使用uri调用第三方地图的所有代码,如果有不理解的或者代码有问题欢迎发送到我的邮箱: dingchao7323@qq.com
Android开发 PopupWindow弹窗调用第三方地图(百度,高德)实现导航功能的更多相关文章
- Android 开发 PopupWindow弹窗
简介 PopupWindow,顾名思义弹窗.PopupWindow是与AlertDialog在形式上类似的弹窗功能,都是为了在activity最上层显示一个弹窗.但是区别是PopupWindow可以自 ...
- Android开发中怎样调用系统Email发送邮件(多种调用方式)
在Android中调用其他程序进行相关处理,几乎都是使用的Intent,所以,Email也不例外,所谓的调用Email,只是说Email可以接收Intent并做这些事情 我们都知道,在Android中 ...
- Android 开发之避免被第三方使用代理抓包
现象:charles抓不到包,但wireshark,HttpAnalyzor可以抓到包. 关键代码: URL url = new URL(urlStr); urlConnection = (HttpU ...
- Android开发_如何调用系统默认浏览器访问
Android开发_如何调用系统默认浏览器访问 2015-10-20 17:53 312人阅读 http://blog.sina.com.cn/s/blog_6efce07e010142w7.htm ...
- Android开发10:传感器器及地图相关应用
前言 啦啦啦~各位小伙伴们好~经过这一学期的Android知识的学习,我们学到了很多和Android开发相关的知识,这一学期的学习也要告一段落了. 一起进入我们今天的相关内容~这次我们将一起学习使用 ...
- 如何在app里利用js调取手机第三方地图--以高德地图和百度地图为例(2)
接着上篇文章说一下js调取第三方地图的问题,上次的方式是通过一个链接直接接到了第三方的web页面,又从第三方的web页面调用的第三方app;结果,这个方法被否定了,因为需求不是这样,需求直接就想调用第 ...
- iOS调用第三方地图App进行导航方法
前言 App内根据手机上装载的地图App将其显示在弹出的选择框,选择对应地图跳转进入地图导航.需要用到- (BOOL)canOpenURL:(NSURL *)url NS_AVAILABLE_IOS( ...
- ReactNative 调用手机地图(高德、百度)导航 Android
由于项目需要,鉴于第三方sdk包的体积略大,经过评估论证后,决定采用调起APP以及网页地图的方式来进行导航. 思路: 在需要调用导航的界面通过原生获取当前手机内可用的导航app组装成列表返回到RN待选 ...
- ios开发之--条用第三方地图路线导航
项目里面有位置功能,需要有导航,导航两种实现方式 (集成第三方SDK.URL跳转第三方应用) ,直接集成就不说,下面来说下通过url跳转, 最终效果如如下: 如果手机上安装的有客户端就展示,没有就不展 ...
随机推荐
- 剑指Offer——回溯算法解迷宫问题(java版)
剑指Offer--回溯算法解迷宫问题(java版) 以一个M×N的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍.设计程序,对任意设定的迷宫,求出从入口到出口的所有通路. 下面我们来详细讲一 ...
- jQuery Ajax 使用 ($.ajax、$.post、$.get)
项目中只要涉及到前后台的交互,数据状态之间的交互,ajax是必不可少的.一般项目中jquery方式的ajax用的还是比较多的.封装的比较好,用起来也顺手,兼容浏览器之间的差异. 操作的方式有三种: 1 ...
- Ext JS 6开发实例(一)
很久没写文章了,主要原因和大家差不多,都要为生活奔忙,搞了两个小项目.这两个小项目很凑巧,都可以使用Ext JS来开发,这正是练习使用Ext JS 6的好机会,自然不会错过. 很多读者可能会问,为什么 ...
- 【Unity技巧】自定义消息框(弹出框)
写在前面 这一篇我个人认为还是很常用的,一开始也是实习的时候学到的,所以我觉得实习真的是一个快速学习工程技巧的途径. 提醒:这篇教程比较复杂,如果你不熟悉NGUI.iTween.C#的回调函数机制,那 ...
- (NO.00004)iOS实现打砖块游戏(一):素材的制作
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 本系列来实现一个儿时就很喜欢的打砖块游戏,我记得以前红白机上有一 ...
- 【自制插件】将MMD4Mecanim转换的MMD模型导入maya
这个已经废弃了_(:зゝ∠)_,另外做了升级版: http://www.cnblogs.com/marisa/p/5174150.html ============================== ...
- Linux中的端口占用问题
本文将会阐述两种解决端口占用的方法. 本文会用到的服务器端的程序如下: #include "unp.h" #include <time.h> int main(int ...
- JAVA之旅(十五)——多线程的生产者和消费者,停止线程,守护线程,线程的优先级,setPriority设置优先级,yield临时停止
JAVA之旅(十五)--多线程的生产者和消费者,停止线程,守护线程,线程的优先级,setPriority设置优先级,yield临时停止 我们接着多线程讲 一.生产者和消费者 什么是生产者和消费者?我们 ...
- react-native版本升级
时刻将React Native更新到最新的版本,可以获得更多API.视图.开发者工具以及其他一些好东西(译注:官方开发任务繁重,人手紧缺,几乎不会对旧版本提供维护支持,所以即便更新可能带来一些兼容上的 ...
- React Native之hellWord
初始化项目工程 进入自己的工作空间然后shift+鼠标右键打开命令行窗口执行如下命令创建RN工程HelloWorld: 然后使用Android Studio打开AVD Manager创建模拟器,在打开 ...