java - 我没有找到任何关于将所有图像获取到 html 网页的代码
问题描述
我尝试了很多方法,但没有成功,我知道使用的First();
方法,我的意思是不能创建循环,无论如何,相关网页在这里:http ://www.planecrashinfo.com/recent.htm
谢谢已经是我的新代码了,下面我不知道我是如何同步他说的
private class FetchImageLogo extends AsyncTask<Void, Void, Void> {
Bitmap bitmap;
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setTitle("LOGO");
progressDialog.setMessage("Logo Çekiliyor...");
progressDialog.setIndeterminate(false);
progressDialog.show();
}
@Override
protected Void doInBackground(Void... params) {
try{
getAllImages(yemekURL);
for (int i = 0; i < imagesURLs.size(); i++) {
Glide.with(activity_main)
.load(imagesURLs.get(i))
.diskCacheStrategy(DiskCacheStrategy.NONE)
.skipMemoryCache(true)
.into(resimler);
}
/*
Document doc = Jsoup.connect(yemekURL).get();
Element link = doc.select("img").first();
String absHref = link.attr("abs:src"); // "http://jsoup.org/"
InputStream input = new java.net.URL(absHref).openStream();
bitmap = BitmapFactory.decodeStream(input);*/
}catch (Exception e){
e.printStackTrace();
}
return null;
}
ArrayList<String> getAllImages(String url) {
try {
doc = Jsoup.connect(url).get();
} catch (IOException e) {
// ToDo "Can not connect the URL, Make sure that the URL starts with [http://...]"
return null;
}
Elements media = doc.select("[src]");
Element link = doc.select("img").first();
for (Element src : media) {
if (src.tagName().equals("img")) {
// Add images url to the list
imagesURLs.add(link.attr("abs:src"));
}
}
return imagesURLs;
}
@Override
protected void onPostExecute(Void aVoid) {
logo_layout = (LinearLayout)findViewById(R.id.logo_layout);
ImageView img_logo = (ImageView)findViewById(R.id.img_logo);
logo_layout.setVisibility(View.VISIBLE);
img_logo.setImageBitmap(bitmap);
progressDialog.dismiss();
}
我不知道我在写什么代码 beetwen scopsGlide.with(***activity_main***)
解决方案
您需要将其添加到您的应用程序标签之外
AndroidManifest.xml
才能访问 Internet。<uses-permission android:name="android.permission.INTERNET" />
将
Glide
和Jsoup
库添加到您的项目中。activity_main.xml
<TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="First Image" android:gravity="center" android:textSize="18sp"/> <ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" />
MainActivity.java
private ProgressDialog progressDialog; private ImageView imageView; private ArrayList<String> imagesURLs = new ArrayList<>(); private String firstImgURL = ""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_download_images); imageView = findViewById(R.id.imageView); new FetchImageLogo().execute(); } private class FetchImageLogo extends AsyncTask<Void, Void, Void> { //Bitmap bitmap; @Override protected void onPreExecute() { super.onPreExecute(); progressDialog = new ProgressDialog(MainActivity.this); progressDialog.setTitle("LOGO"); progressDialog.setMessage("Logo Çekiliyor..."); progressDialog.setIndeterminate(false); progressDialog.show(); } @Override protected Void doInBackground(Void... params) { String yemekURL = "http://www.planecrashinfo.com/recent.htm"; try { imagesURLs = getAllImages(yemekURL); // Can not get images URLs if (imagesURLs == null) return null; } catch (Exception e) { e.printStackTrace(); } // Display the first image... // you have to put your code in runOnUiThread() to reach UI components runOnUiThread(new Runnable() { @Override public void run() { Glide.with(MainActivity.this) .load(firstImgURL) .diskCacheStrategy(DiskCacheStrategy.NONE) .skipMemoryCache(true) .into(imageView); } }); final StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < imagesURLs.size(); i++) { // ToDo: you need to create [RecyclerView] to display all images /*runOnUiThread(new Runnable() { @Override public void run() { Glide.with(MainActivity.this) .load(imagesURLs.get(i)) .diskCacheStrategy(DiskCacheStrategy.NONE) .skipMemoryCache(true) .into(imageView); } });*/ stringBuilder.append("img").append(String.valueOf(i + 1)).append(": ") .append(imagesURLs.get(i)).append("\n"); } // See -> Logcat Log.d("Debug_Images", stringBuilder.toString()); return null; } ArrayList<String> getAllImages(String url) { Document doc; try { doc = Jsoup.connect(url).get(); } catch (IOException e) { // ToDo "Can not connect the URL, Make sure that the URL starts with [http://...]" return null; } // Get the first image URL Element link = doc.select("img").first(); firstImgURL = link.attr("abs:src"); // Get all images URLs Elements media = doc.select("[src]"); for (Element img : media) { if (img.tagName().equals("img")) { // Add images url to the list imagesURLs.add(img.attr("abs:src")); } } return imagesURLs; } @Override protected void onPostExecute(Void aVoid) { /*logo_layout = (LinearLayout) findViewById(R.id.logo_layout); ImageView img_logo = (ImageView) findViewById(R.id.img_logo); logo_layout.setVisibility(View.VISIBLE); img_logo.setImageBitmap(bitmap);*/ progressDialog.dismiss(); } }
推荐阅读
- algorithm - 使用向下指针对链表进行排序
- flutter - 在 ListView.builder 中定义从 Firestore 检索到的文档数
- javascript - 计算字符串最大可能长度的算法
- c# - IdentityServer4 是否比 JWT 实现的示例更安全
- ios - 在 swiftui 中使用 @Binding 和类型转换
- bash - 在 bashrc 中添加对我的 PS1 命令的功能调用
- linux - 简单的 SIP 呼叫接收器和记录器
- android - 获得用户消息平台 Android 的同意
- javascript - node.js 中未处理的 Firestore 实时侦听器错误
- java - 使用 bytebuddy 从拦截方法调用 lambda 会引发 java.lang.NoClassDefFoundError: