簡體   English   中英

如何將圖像從文件加載到Android中的內存中?

[英]How to load image from file into the memory in android?

我有多表應用程序。 用戶可以選擇從文件中選擇背景圖像。 但是,當用戶更改選項卡時,性能不好,應用程序運行緩慢。 因此,我正在尋找先將圖像加載到ram然后再加載到背景的方式。 但是我不知道該怎么辦。 有什么建議或指導嗎?

這是我的代碼:

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    page=inflater.inflate(R.layout.activity_grc_page, container, false);
    page.setBackgroundResource(background_id);
    ((ImageView)page.findViewById(R.id.pagebackground)).setImageResource(background_id);
    ((ImageView)page.findViewById(R.id.pagebackground)).setScaleType(ImageView.ScaleType.CENTER_CROP);
    final ImageView background_view=((ImageView)page.findViewById(R.id.pagebackground));

    setBackground(background_path,background_id);

    return page;
}

public void setBackground(String path,int ires){
    if(path==null ){
        ((ImageView)page.findViewById(R.id.pagebackground)).setImageResource(ires);
        ((ImageView)page.findViewById(R.id.pagebackground)).setScaleType(ImageView.ScaleType.CENTER_CROP);
    }else{
        if(path.compareTo("")==0){
            ((ImageView)page.findViewById(R.id.pagebackground)).setImageResource(ires);
            ((ImageView)page.findViewById(R.id.pagebackground)).setScaleType(ImageView.ScaleType.CENTER_CROP);
        }else{
            if(path.indexOf("file://")==0){
                path=path.replace("file://", "");
            }
            File f = new File(path);
            if(f.exists()){
                Drawable d = Drawable.createFromPath(f.getAbsolutePath());
                ((ImageView)page.findViewById(R.id.pagebackground)).setImageDrawable(d);
                ((ImageView)page.findViewById(R.id.pagebackground)).setScaleType(ImageView.ScaleType.CENTER_CROP);
            }else{
                ((ImageView)page.findViewById(R.id.pagebackground)).setImageResource(ires);
                ((ImageView)page.findViewById(R.id.pagebackground)).setScaleType(ImageView.ScaleType.CENTER_CROP);
            }

        }

    }
}

您可以使用延遲加載的概念。 通過這種方式,您的用戶界面將永遠不會掛死且無法正常工作。在線上有很多教程可供您檢查

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM