我正在搜索页面的xml内容并从该xml解析一些URL,这些URL都是Url的图像。 然后我使用位图使图像显示在imageviwer中。此外,我需要该图像用于我的下一个布局设计。如何存储图像以供进一步使用,如果我可以如何操作,我可以将图像存储在可绘制文件夹中。我在下面的代码中提到我需要将imageview内容保存到drawable文件夹..
protected Void doInBackground(String... params) {
try {
url=new URL(UrlLink2) ;
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
InputStream isp=urlConnection.getInputStream();
DocumentBuilderFactory DBF=DocumentBuilderFactory.newInstance();
DocumentBuilder Db=DBF.newDocumentBuilder();
doc=Db.parse(isp);
Element rootElem=doc.getDocumentElement();
NodeList itemlist=rootElem.getElementsByTagName("item");
Node currentitem=null;
Node childnode=null;
Node ContentChild=null;
Node CddatatChild=null;
NodeList childnodeList=null;
NodeList CddataList=null;
NodeList ContentChilList=null;
for(int i=0;i<itemlist.getLength();i++){
currentitem=itemlist.item(i);
childnodeList=currentitem.getChildNodes();
for(int j=0;j<childnodeList.getLength();j++){
childnode=childnodeList.item(j);
if(childnode.getNodeName().equalsIgnoreCase("content:encoded")){
ContentChilList=childnode.getChildNodes();
ContentChilList.getLength();
CddatatChild=ContentChilList.item(0);
CddataList=CddatatChild.getChildNodes();
if(CddatatChild.getNodeName().equalsIgnoreCase("#cdata-section")){
GetCddata=CddatatChild.getTextContent().toString();
GetCddata=CddatatChild.getTextContent();
}
}
}
}
}
catch(Exception e){
}
try{
int i=0;
String ss=GetCddata;
Pattern PatternImgURLS = Pattern.compile("(?<=a href=\")(.*?)(?=\")");
Pattern PatternImgname = Pattern.compile("(?<=2014\\/09\\/)(.*?)(?=\\.)");
Matcher Imagematcher = PatternImgURLS.matcher(ss);
Imagematcher.matches();
while (Imagematcher.find()) {
ImgUrl=Imagematcher.toMatchResult().group();
ImageUrls.add(ImgUrl);
i++;
}
for(int count=0;count<ImageUrls.size();count++){
Matcher Namematcher = PatternImgname.matcher(ImageUrls.get(count));
Namematcher.matches();
while (Namematcher.find()) {
String MatchTxt=Namematcher.toMatchResult().group();
String lowerMatchTxt = MatchTxt.toLowerCase();
ImageName.add(lowerMatchTxt);
Log.v("dd",ImageName.get(count));
}
}
Log.v("dd",ImageUrls.get(0));
int t=ImageUrls.size();
Log.v("dd",toString().valueOf(t));
urlConnection.disconnect();
url=new URL(ImageUrls[0]) ;
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
InputStream isp2=urlConnection.getInputStream();
bitmap=BitmapFactory.decodeStream(isp2);
urlConnection.disconnect();
}
catch(Exception e){
Log.v("h",e.toString()) ; }
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
dialog.dismiss();
Here I am displaying---> Imageview.setImageBitmap(bitmap);
the image in Image viwer
Now how do I store the image from the imageviewer to
drawable folder in andriod is that possiable.
}
}
答案 0 :(得分:0)
我建议您不要自己实施,但请选择能够为您完成的知名图书馆。例如,Picasso具有适合您需求的功能。您只需将URL传递给它,Picasso将下载并将图像保存在缓存文件夹中以供下次使用:
Picasso.with(context).load(imageUrl).into(imageView);
您所要做的就是解析这些图像URL并将它们存储在内存中。
答案 1 :(得分:0)
您无法在运行时存储/写入res / drawable。但是您可以更改程序以使用其他存储形式参考此 http://developer.android.com/guide/topics/data/data-storage.html
答案 2 :(得分:0)
首先,你无法在res / drawable中保存你的图像,因为一旦部署了.apk文件,资源就无法改变。
但您可以使用应用程序的缓存目录。它是属于您的应用程序的非公共文件夹,将在卸载时删除。此外,如果设备空间不足,系统可以从该目录中删除。它可以通过以下方式访问:
context.getCacheDir()
注意虽然文档说:
你不应该依赖系统为你删除这些文件;你应该总是有一个合理的最大值,例如1 MB,用于缓存文件所占用的空间量,并在超过该空间时修剪这些文件
的
如果您需要大量空间而宁愿使用SD卡,也可以致电
getExternalCacheDir()
代替。这些也将在卸载时删除,但系统不会监视外部存储中的可用空间,因此如果空间不足则不会自动删除这些文件。如果使用此选项,您还应检查外部存储是否可用
Environment.getExternalStorageState()
Environment.getExternalStorageState() 在尝试写入之前。