Android Canvas绘制网络图片代码
时间: 2023-11-26 18:02:54 浏览: 229
以下是使用 Android Canvas 绘制网络图片的示例代码:
```java
public class MainActivity extends AppCompatActivity {
private Bitmap mBitmap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化网络图片
new Thread(new Runnable() {
@Override
public void run() {
try {
URL url = new URL("https://www.example.com/image.jpg");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
mBitmap = BitmapFactory.decodeStream(input);
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
// 绘制网络图片
final ImageView imageView = findViewById(R.id.image_view);
imageView.post(new Runnable() {
@Override
public void run() {
Bitmap bitmap = Bitmap.createBitmap(imageView.getWidth(), imageView.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setFilterBitmap(true);
Matrix matrix = new Matrix();
matrix.postScale((float) imageView.getWidth() / mBitmap.getWidth(), (float) imageView.getHeight() / mBitmap.getHeight());
canvas.drawBitmap(mBitmap, matrix, paint);
imageView.setImageBitmap(bitmap);
}
});
}
}
```
这里使用了一个子线程来加载网络图片,然后在主线程中使用 Canvas 绘制图片并显示在 ImageView 中。需要注意的是,加载网络图片可能会耗时较长,需要在子线程中进行。为了保证图片加载完成后才进行绘制,这里使用了一个 ImageView 的 post() 方法,保证在 ImageView 绘制完成后再进行绘制。
阅读全文