Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android HTML.ImageGetter图像大小调整_Java_Android_Html_Android Drawable - Fatal编程技术网

Java Android HTML.ImageGetter图像大小调整

Java Android HTML.ImageGetter图像大小调整,java,android,html,android-drawable,Java,Android,Html,Android Drawable,我有一个文本视图,可以加载HTML内容(也有img标记)。我的问题是有些图像太大,所以应用程序崩溃。有没有办法使图像大小相同 我的代码示例: String EntireStire = "<b>" + mItem.title + " </b> <br> <img src='" + mItem.photo + "' > " + " <br><small>" + mItem.

我有一个文本视图,可以加载HTML内容(也有img标记)。我的问题是有些图像太大,所以应用程序崩溃。有没有办法使图像大小相同

我的代码示例:

            String EntireStire = "<b>" + mItem.title + " </b> <br> <img src='"
                + mItem.photo + "' > " + " <br><small>" + mItem.description
                + " <br> " + mItem.content + "</small>";

        noteView.setText(Html.fromHtml(EntireStire, new MyImageGetter(),
                null));
        noteView.setMovementMethod(LinkMovementMethod.getInstance());
    }

    return rootView;
}

private class MyImageGetter implements Html.ImageGetter {

    @Override
    public Drawable getDrawable(String arg0) {
        Bitmap bitmap;
        try {
            bitmap = BitmapFactory.decodeStream(
                    (InputStream) new URL(arg0).getContent(), null, null);
            @SuppressWarnings("deprecation")
            Drawable drawable = new BitmapDrawable(bitmap);
            drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),
                    drawable.getIntrinsicHeight());
            return drawable;
        } catch (Exception e) {
            Drawable d = getResources().getDrawable(R.drawable.ic_launcher);
            d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
            return d;
        }
    }
}
String EntireStire=”“+mItem.title+”
“+”
“+mItem.description +“
”+mItem.content+”; noteView.setText(Html.fromHtml(EntireStire,新的MyImageGetter(), 空); setMovementMethod(LinkMovementMethod.getInstance()); } 返回rootView; } 私有类MyImageGetter实现Html.ImageGetter{ @凌驾 公共可提取getDrawable(字符串arg0){ 位图; 试一试{ 位图=BitmapFactory.decodeStream( (InputStream)新URL(arg0.getContent(),null,null); @抑制警告(“弃用”) Drawable Drawable=新的位图Drawable(位图); drawable.setBounds(0,0,drawable.getIntrinsicWidth(), getIntrinsicHeight()); 回拉; }捕获(例外e){ Drawable d=getResources().getDrawable(R.Drawable.ic_启动器); d、 setBounds(0,0,d.getIntrinsicWidth(),d.getIntrinsicHeight()); 返回d; } } }
设置边界时使用封顶宽度/高度将确保所有图像的大小相同。在这里,我稍微修改了您的MyImageGetter方法

private class MyImageGetter implements Html.ImageGetter {

@Override
public Drawable getDrawable(String arg0) {
    Bitmap bitmap;
    try {
        bitmap = BitmapFactory.decodeStream(
                (InputStream) new URL(arg0).getContent(), null, null);
        @SuppressWarnings("deprecation")
        Drawable drawable = new BitmapDrawable(bitmap);
        float multiplier = (float)SOME_CAPPED_WIDTH / (float)drawable.getIntrinsicWidth();
        int width = (int)(drawable.getIntrinsicWidth() * multiplier);
        int height = (int)(drawable.getIntrinsicHeight() * multiplier);
        drawable.setBounds(0, 0, width, height);
        return drawable;
    } catch (Exception e) {
        Drawable d = getResources().getDrawable(R.drawable.ic_launcher);
        d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
        return d;
    }
}
}

还可以使用类来支持多屏幕大小

如果要调整高度和宽度,则可以更改

Drawable d = getResources().getDrawable(R.drawable.ic_launcher);
        d.setBounds(0, 0, 100, 100);
或者如果要压缩,请执行以下操作

Bitmap bitmap = ((BitmapDrawable)drawable).getBitmap();
ByteArrayOutputStream out = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
drawable = new BitmapDrawable(_context.getResources(),bitmap);

使用此代码,它会调整图像的大小

private class MyImageGetter implements Html.ImageGetter {
    private final Context context;

    public MyImageGetter (Context context){
        this.context = context;
    }

    @Override
    public Drawable getDrawable(String source) {
        int path = context.getResources().getIdentifier(source, "drawable",
                BuildConfig.APPLICATION_ID);
            Drawable drawable = context.getResources().getDrawable(path);
            Display display = getWindowManager().getDefaultDisplay();
            Point size = new Point();
            display.getSize(size);
            int widthD = size.x;
            int heightD = size.y;
            drawable.setBounds(0, 0, widthD, (widthD* drawable.getIntrinsicHeight()/ drawable.getIntrinsicWidth()));
            return drawable;

    }
}

您可以这样调整位图的大小:您可以使用一些封顶宽度或高度来强制所有显示的图像大小相同。查看下面我的答案了解详细信息。不确定他是否回答过你,但只是想说这对我很有帮助,谢谢!
private class MyImageGetter implements Html.ImageGetter {
    private final Context context;

    public MyImageGetter (Context context){
        this.context = context;
    }

    @Override
    public Drawable getDrawable(String source) {
        int path = context.getResources().getIdentifier(source, "drawable",
                BuildConfig.APPLICATION_ID);
            Drawable drawable = context.getResources().getDrawable(path);
            Display display = getWindowManager().getDefaultDisplay();
            Point size = new Point();
            display.getSize(size);
            int widthD = size.x;
            int heightD = size.y;
            drawable.setBounds(0, 0, widthD, (widthD* drawable.getIntrinsicHeight()/ drawable.getIntrinsicWidth()));
            return drawable;

    }
}