【发布时间】:2012-05-14 11:03:09
【问题描述】:
我正在创建一个活动,我将在其中显示访问过的网站列表及其徽标和用户选择的别名。
例如
-
最近访问的网站
logo1 网站1/别名
logo2 网站2/别名
.
。所以没有
问题是,(参考附图)如何让网站标志显示在http://的左侧?
【问题讨论】:
标签: java android xml layout webview
我正在创建一个活动,我将在其中显示访问过的网站列表及其徽标和用户选择的别名。
例如
最近访问的网站
logo1 网站1/别名
logo2 网站2/别名
.
。所以没有
问题是,(参考附图)如何让网站标志显示在http://的左侧?
【问题讨论】:
标签: java android xml layout webview
使用本网站:
https://besticon-demo.herokuapp.com/allicons.json?url=www.stackoverflow.com
它会为一个网站找到多种尺寸的所有徽标,并返回一个带有元数据的漂亮 json 字符串,包括图标的 url。您只需将 www.stackoverflow.com 替换为您的域即可。
如果您愿意,该网站还有一个用于手动输入网站的 gui:
https://besticon-demo.herokuapp.com/
以下是查询堆栈溢出网站返回的示例字符串:
{
"url":"www.stackoverflow.com",
"icons":[
{
"url":"http://stackoverflow.com/apple-touch-icon.png",
"width":158,
"height":158,
"format":"png",
"bytes":3445,
"error":null,
"sha1sum":"c78bd457575a3221c6b3d0d17ffb00ffc63d7cd0"
},
{
"url":"http://cdn.sstatic.net/Sites/stackoverflow/img/favicon.ico?v=4f32ecc8f43d",
"width":32,
"height":32,
"format":"ico",
"bytes":5430,
"error":null,
"sha1sum":"4f32ecc8f43d0986b9c6ce9f37999e86c0b829ef"
},
{
"url":"http://stackoverflow.com/favicon.ico",
"width":32,
"height":32,
"format":"ico",
"bytes":5430,
"error":null,
"sha1sum":"4f32ecc8f43d0986b9c6ce9f37999e86c0b829ef"
}
]
}
【讨论】:
ImageView 和Glide 中显示
它被称为 favicon,你所要做的就是:
/favicon.ico 有图标,请使用它。<link rel="shortcut icon" href="<i>URL goes here</i>" />中提取位置。您需要使用 HTML 解析器并找到带有 rel 的 <link> 或 icon 或 shortcut icon。【讨论】:
我知道我迟到了,但这个 API 会帮助其他人
Android 不支持网站图标文件。您可以获取 favicon,但不能显示/使用它。
但是 Google 提供了免费的 API 来获取图片格式的网站图标。
https://www.google.com/s2/favicons?sz=64&domain_url=microsoft.com
使用 Picasso 在 imageview 中显示图标。
【讨论】:
使用这个logo.clearbit.com/stackoverflow.com
您甚至可以自定义以获得特定的尺寸和 grascaled 版本
【讨论】:
此方法可用于获取Favicon Icon位图
private Bitmap fetchFavicon(Uri uri) {
final Uri iconUri = uri.buildUpon().path("favicon.ico").build();
Log.i(TAG, "Fetching favicon from: " + iconUri);
InputStream is = null;
BufferedInputStream bis = null;
try
{
URLConnection conn = new URL(iconUri.toString()).openConnection();
conn.connect();
is = conn.getInputStream();
bis = new BufferedInputStream(is, 8192);
return BitmapFactory.decodeStream(bis);
} catch (IOException e) {
Log.w(TAG, "Failed to fetch favicon from " + iconUri, e);
return null;
}
}
【讨论】:
API 中,conn.connect 将使应用程序崩溃。你有什么新建议吗?
尝试使用此代码:
imageview1.setImageBitmap(webview1.getFavicon());
【讨论】:
这是一个尝试从 URL 推断徽标图像的 python 库:
https://github.com/dcollien/urlimage
它解析 url 处的 HTML,并尝试了很多事情,包括:
【讨论】: