1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 熟悉Android---imageView加载网络图片

熟悉Android---imageView加载网络图片

时间:2020-05-19 18:16:11

相关推荐

熟悉Android---imageView加载网络图片

补充

使用Glide框架只要一行代码就可以搞定图片的显示,功能更强大。都了,有好用的框架那必须要用啊。Glide框架使用请移步郭霖大神的博客:

/guolin_blog/article/details/53759439

前言

4.0以后的版本,UI线程不允许有耗时操作,所以请求网络图片需要运行在子线程;

加载图片的代码参考:

/question/537762079.html

效果图

图片链接:

/images/user_3.jpg

布局文件

<LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"><ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/img1"/></LinearLayout>

MainActivity

第一步:

在UI线程定义 网络图片链接;

第二步:

新建子线程请求图片,请求结果为bitmap;

第三步:

在UI线程将图片加载出来;

public class MainActivity extends Activity {private ImageView imageView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);imageView = findViewById(R.id.img1);URL url = null;try {url = new URL("/images/user_3.jpg");requestImg(url);} catch (MalformedURLException e) {e.printStackTrace();}}private void requestImg(final URL imgUrl){new Thread(new Runnable() {@Overridepublic void run() {Bitmap bitmap = null;try {bitmap = BitmapFactory.decodeStream(imgUrl.openStream());showImg(bitmap);} catch (IOException e) {e.printStackTrace();}}}).start();}private void showImg(final Bitmap bitmap){runOnUiThread(new Runnable() {@Overridepublic void run() {imageView.setImageBitmap(bitmap);}});}}

联想

第一步和第二应该可以合并在子线程中;

将bitmap声明为全局变量,第三步应该可以精简:

try {url = new URL("/images/user_3.jpg");requestImg(url);} catch (MalformedURLException e) {e.printStackTrace();}imageView.setImageBitmap(bitmap);

这里我没有测试过,只是一些想法;

权限

在 Mainfest.xml文件中加入网络权限申请;

<uses-permission android:name="android.permission.INTERNET"/

运行即可;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。