private void addPolylineInPlayGround() {
List<Integer> colorList = new ArrayList<Integer>();
List<BitmapDescriptor> bitmapDescriptors = new ArrayList<BitmapDescriptor>();
int[] colors = new int[]{Color.argb(255, 0, 255, 0), Color.argb(255, 255, 255, 0), Color.argb(255, 255, 0, 0)};
//用一个数组来存放纹理
List<BitmapDescriptor> textureList = new ArrayList<BitmapDescriptor>();
textureList.add(BitmapDescriptorFactory.fromResource(R.drawable.custtexture));
List<Integer> texIndexList = new ArrayList<Integer>();
texIndexList.add(0);//对应上面的第0个纹理
texIndexList.add(1);
texIndexList.add(2);
Random random = new Random();
for (int i = 0; i < latLngs.size(); i++) {
colorList.add(colors[random.nextInt(3)]);
bitmapDescriptors.add(textureList.get(0));
}
mPolyline = mAMap.addPolyline(new PolylineOptions().setCustomTexture(BitmapDescriptorFactory.fromResource(R.drawable.custtexture)) //setCustomTextureList(bitmapDescriptors)
.setCustomTextureIndex(texIndexList)
.addAll(latLngs)
.useGradient(true)
.width(18));
dismissLoading();
LatLngBounds bounds = new LatLngBounds(latLngs.get(0), latLngs.get(latLngs.size() - 2));
mAMap.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds, 200));
}
//Tout d'abord, obtenez un nombre relativement grand de points de latitude et de longitude grâce aux requêtes réseau, puis je tracerai des lignes en fonction des points sur la carte. Le principal problème maintenant est que le processus de dessin au trait prendra plus de temps et que la page restera bloquée (ce qui n'est pas bon). Parce que la quantité de données sera plus grande, mais la ligne tracée par le sous-thread clé ne pourra pas être tracée et le thread de l'interface utilisateur restera à nouveau bloqué. Au secours....
ps : j'ai essayé d'utiliser runonuithread dans le thread enfant pour faire fonctionner l'addPolyLine du milieu, mais cela n'a pas fonctionné non plus.
这个方法在请求完数据后就直接执行了。
Dessinez d'abord sur le sous-thread, puis actualisez l'interface sur le thread principal via le gestionnaire.
Si vous souhaitez utiliser rxjava, ce sera très pratique