Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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
在android应用程序中显示URL中的图像?_Android_Performance_Listview_Bitmap - Fatal编程技术网

在android应用程序中显示URL中的图像?

在android应用程序中显示URL中的图像?,android,performance,listview,bitmap,Android,Performance,Listview,Bitmap,我正在尝试制作一个解析HTML、检索图像并创建新闻或帖子列表的应用程序 我在显示图像时遇到了一个问题,因为当我下载它时,它很大,当我尝试使用位图解码对图像大小进行采样时,ListClass对象只支持整数数组(R.id…) 我研究过使用InputStream,但它只支持Drawable。有没有一种方法可以显示我的网站列表中的图像,这样它就不会分配太多内存,从而导致应用程序速度变慢 主要活动形象 我的主要活动 [![import android.os.Bundle; import android.

我正在尝试制作一个解析HTML、检索图像并创建新闻或帖子列表的应用程序

我在显示图像时遇到了一个问题,因为当我下载它时,它很大,当我尝试使用位图解码对图像大小进行采样时,ListClass对象只支持整数数组(R.id…)

我研究过使用InputStream,但它只支持Drawable。有没有一种方法可以显示我的网站列表中的图像,这样它就不会分配太多内存,从而导致应用程序速度变慢

主要活动形象

我的主要活动

[![import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.view.View;
import android.support.design.widget.NavigationView;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.app.FragmentManager;
import android.widget.FrameLayout;
import android.widget.Button;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;
import android.app.Activity;
import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable;




public class MainActivity extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener   {

    ListView list;
    String\[\] web = {
            "asd "};
    Integer\[\] imageId = {
            R.drawable.pol};

    Handler handler;
    Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        TextView text = (TextView)findViewById(R.id.textView);
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.setDrawerListener(toggle);
        toggle.syncState();
        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);
        listClass adapter = new
                listClass(MainActivity.this, web, imageId);
        list=(ListView)findViewById(R.id.list);
        list.setAdapter(adapter);
        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {
                Toast.makeText(MainActivity.this, "You Clicked at " +web\[+ position\], Toast.LENGTH_SHORT).show();
            }
        });

    }

尝试此操作,也可以根据您的需要调整大小。。或者查看使用通用加载器调整大小

<ImageView
android:id="@id/ivImage"
android:layout_width="150dp"
android:layout_height="150dp"
android:adjustViewBounds="true"

android:scaleType="fitCenter" />
论创造

此处没有图像缓存中没有任何图像加载的可绘制图像


您也可以使用Piccaso和Glide尝试此操作,也可以根据您的需要调整大小..或者使用通用加载器查看调整大小功能

<ImageView
android:id="@id/ivImage"
android:layout_width="150dp"
android:layout_height="150dp"
android:adjustViewBounds="true"

android:scaleType="fitCenter" />
论创造

此处没有图像缓存中没有任何图像加载的可绘制图像


您也可以使用Piccaso和Glide

使用Glide library从url加载图像参考此处:在开发广泛处理位图的应用程序时,最好使用图像下载库。如果您使用自己的机制从网络下载图像,并尝试在listview上显示。当然,您将摆脱内存异常。要避免此异常,您必须注意缓存机制、位图大小调整和内存分配。而不是简单地使用图像下载库。BitmapFactory可以很好地从输入流解码和缩小。所以你给自己制造了麻烦。@greenapps我知道我可以使用BitmapFactory。但它只允许我创建FromStream并以可绘制形式返回。@JagjitSingh从未听说过该库,他将签出该库。使用Glide库从url加载图像请参阅此处:在开发广泛处理位图的应用程序时,最好使用图像下载库。如果您使用自己的机制从网上下载图片并尝试在listview上显示。当然,您将摆脱内存异常。要避免此异常,您必须注意缓存机制、位图大小调整和内存分配。而不是简单地使用图像下载库。BitmapFactory可以很好地从输入流解码和缩小。所以你给自己制造了麻烦。@greenapps我知道我可以使用BitmapFactory。但它只允许我创建FromStream并以可绘制的形式返回。@JagjitSingh从未听说过该库将检出它。
    private ImageLoader imageLoader1;
 imageLoader1 = ImageLoader.getInstance();

 imageLoader1.init(ImageLoaderConfiguration.createDefault(getActivity()));
   DisplayImageOptions
            options = new DisplayImageOptions.Builder()
            .cacheInMemory(true)
            .cacheOnDisk(true)
            .showImageOnLoading(R.drawable.no_image) // resource or drawable
            .showImageForEmptyUri(R.drawable.no_image) // resource or drawable
            .showImageOnFail(R.drawable.no_image)
            .considerExifParams(true)
            .bitmapConfig(Bitmap.Config.RGB_565)
            .build();

    imageLoader1.displayImage(yourpath.replace(" ", "%20"), ivImage, options);