[英]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.