Показать сообщение отдельно
Старый 15.11.2013, 03:05   #7
barsunduk
ПроЭктировщик
 
Аватар для barsunduk
 
Регистрация: 09.05.2010
Адрес: рф ро шахты
Сообщений: 177
Написано 66 полезных сообщений
(для 271 пользователей)
Ответ: загрузка картинки из архива сразу в Drawable

я это уже пытался делать. только сейчас понял, почему не работало. с контекстами напутано было.
короче, вот РАБОЧИЙ ВАРИАНТ:
package ru.tururu.turu;

import java.io.*;
import java.util.zip.*;

import android.content.Context;
import android.graphics.drawable.Drawable;

public class  
Unzip {

    
// тут другие функции будут
    // ...

   /* Чтение картинки из архива в Assets. Пример вызова из Activity:
    * imageview1.setImageDrawable(Unzip.zipAssetsDrawable(
    * "image1.jpg", getApplicationContext()));
    * в папке Assets открывается архив assets.zip и из него извлекается
    * картинка filename сразу в Drawable */
    
public static Drawable zipAssetsDrawable(String filenameContext context) {
        
Drawable d null;
        
String zipfilename "assets.zip";
        try {
            
InputStream is context.getAssets().open(zipfilename);
            
ZipInputStream zipinputstream = new ZipInputStream(is);
            
ZipEntry zipentry zipinputstream.getNextEntry();
            while (
zipentry != null) { 
                
String entryName zipentry.getName();
                if (
entryName.equalsIgnoreCase(filename)) {
                    
Drawable.createFromStream(zipinputstreamentryName);
                    
zipinputstream.closeEntry();
                }
                
zipentry zipinputstream.getNextEntry();
            }
            
zipinputstream.close();
        } catch (
Exception e) {
            
e.printStackTrace();
        }
        return 
d;
    }

   
/*  чтение картинки из архива на диске
    *  в zipfilename - путь и имя архива, в filename - имя искомого файла
    *  пример вызова из Assets:
    *  imageview1.setImageDrawable(Unzip.zipFileDrawable(
    * "/mnt/sdcard/Android/data/TestProject/archive.zip", "image1.jpg"); */
    
public static Drawable zipFileDrawable(String zipfilenameString filename) {
        
Drawable d null;
        try {
        
FileInputStream is = new FileInputStream(zipfilename);
            
ZipInputStream zipinputstream = new ZipInputStream(is);
            
ZipEntry zipentry zipinputstream.getNextEntry();
            while (
zipentry != null) { 
                
String entryName zipentry.getName();
                if (
entryName.equalsIgnoreCase(filename)) {
                    
Drawable.createFromStream(zipinputstreamentryName);
                    
zipinputstream.closeEntry();
                }
                
zipentry zipinputstream.getNextEntry();
            }
            
zipinputstream.close();
        } catch (
Exception e) {
            
e.printStackTrace();
        }
        return 
d;
    }
    

всё, теперь можно делать редактор ресурсов под виндой, а результат сохранять в виде архива, который закидывается в ассетс или на флешку
__________________
to be or not to be - it's not a question!
2b or not 2b = ff

Последний раз редактировалось barsunduk, 15.11.2013 в 15:31.
(Offline)
 
Ответить с цитированием