Как я могу использовать изображение с 9 патчами в качестве фона, когда оно находится во внутренней памяти приложения?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу использовать изображение с 9 патчами в качестве фона, когда оно находится во внутренней памяти приложения?

Сообщение Anonymous »

Я использовал то же изображение с 9 патчами в папке с возможностью рисования, где оно работало нормально, но когда я сохранил его во внутренней памяти, оно воспринималось как обычное изображение с черными линиями (инструмента с 9 патчами), показанными на изображении.

Код: Выделить всё

public static Drawable getImageDrawable(Context context, String themeName, String imageName) {
File themeDir = new File(context.getFilesDir(), THEME_DIR);
File themeSubDir = new File(themeDir, themeName);
if (themeSubDir.exists() && themeSubDir.isDirectory()) {
File imageFile = new File(themeSubDir, imageName);
if (imageFile.exists() && imageFile.isFile()) {
if (imageName.endsWith(".9.png")) {
return getNinePatchDrawable(context, imageFile);
} else {
return Drawable.createFromPath(imageFile.getAbsolutePath());
}
}
}
return null; // Return null if the file does not exist
}
private static Drawable getNinePatchDrawable(Context context, File imageFile) {
try  {
FileInputStream fis = new FileInputStream(imageFile);
Bitmap bitmap = BitmapFactory.decodeStream(fis);

if (bitmap != null) {

byte[] chunk = bitmap.getNinePatchChunk();
if (chunk != null) {
String chunkData = new String(chunk, StandardCharsets.UTF_8);
Log.d("TAG", "Chunk data: " + chunkData);
}
if (NinePatch.isNinePatchChunk(chunk)) {
Rect padding = new Rect();
NinePatchDrawable ninePatchDrawable = new NinePatchDrawable(context.getResources(), bitmap, chunk, padding, null);
return ninePatchDrawable;
} else {
Log.e("CheckPoint1", "The chunk is not a valid nine-patch chunk: " + imageFile.getAbsolutePath());
}
} else {
Log.e("CheckPoint2", "Bitmap could not be decoded: " + imageFile.getAbsolutePath());
}
} catch (Exception e) {
Log.e("CheckPoint3", "Error reading image file: " + imageFile.getAbsolutePath(), e);
}
return null;
}
в случае изображений с 9 патчами он всегда заканчивается на checkPoint1, я пробовал много изображений. когда я использую класс drawable, он показывает изображение, но область содержимого и растяжения работает как обычное изображение, но когда я сохранил эти изображения в папке с возможностью рисования, чтобы проверить, является ли изображение неисправным, я получил все изображения в порядке. я получил нулевые данные фрагмента при извлечении из внутреннего хранилища, но из доступных для рисования он также содержит значение.

Подробнее здесь: https://stackoverflow.com/questions/785 ... al-storage
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»