我'关于android的新手,我想要一些关于这件事的帮助。我有一个图像,其网址在我的在线服务器上。
例如
我的网址图片为:http:/example.com/image.png
并存储在我的服务器中,我想将此图片添加到 this image中间的空白部分
我已经在地图内的标记上添加了上述链接的图像,但我无法弄清楚如何在空白部分内添加另一张图像。 我的代码片段是:
marker = map.addMarker(new MarkerOptions().position(position).title(title).snippet(snippetText)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.custom_marker)));
R.drawable.custom_marker
- >是上面链接中的图像。有关如何做到这一点的任何帮助?有没有办法从我的网络服务器检索图像并添加此功能?
提前感谢。
答案 0 :(得分:1)
要在绘图上绘制图像,首先需要获取图像。为此,您将需要使用AsyncTask,因为UI线程上禁止网络操作。
要在现有drawable之上绘制您(从服务器)收到的位图,您需要从中创建一个可变位图。
然后最后你可以在它上面绘制并使用结果作为你的标记的基础。
以下是一个例子:
class ImageTask extends AsyncTask<Void, Void, Bitmap> {
@Override
protected Bitmap doInBackground(Void... params) {
// Get bitmap from server
Bitmap overlay;
try {
URL url = new URL("http://www.quarktet.com/Icon-small.jpg");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
overlay = BitmapFactory.decodeStream(input);
} catch (IOException e) {
e.printStackTrace();
return null;
}
return overlay; }
protected void onPostExecute(Bitmap bitmap) {
// If received bitmap successfully, draw it on our drawable
if (bitmap != null) {
Bitmap marker = BitmapFactory.decodeResource(getResources(), R.drawable.custom_marker);
Bitmap newMarker = marker.copy(Bitmap.Config.ARGB_8888, true);
Canvas canvas = new Canvas(newMarker);
// Offset the drawing by 25x25
canvas.drawBitmap(bitmap, 25, 25, null);
// Add the new marker to the map
mMap.addMarker(new MarkerOptions()
.position(position)
.title(title)
.snippet(snippetText)
.icon(BitmapDescriptorFactory.fromBitmap(newMarker)));
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Init your map here
new ImageTask().execute();
}