سؤال

لدي تطبيق AppWidget وترغب في تمكين المستخدمين من إنشاء جلود يمكن تطبيقها في وقت التشغيل. الحل المفضل لدي هو استخدام ملفات APK مع تسعة تصحيح PNG صور تمتد لتناسب مع عنصر واجهة المستخدم من ImageView's، ومع ذلك بدأت بدأت تبدو وكأنها قد تضطر إلى استخدام تقنية تعبئة أخرى (مثل ملفات ZIP).

ما جربته: استيراد تسعة موارد التصحيح كما رسم مع context.getresourcesforapplication (my.app) .getresources ...، تحويلها إلى الصور النقطية باستخدام قماش وإعداد الصورة النقطية إلى RemoteView باستخدام SetImageViewBIEP. هذا لم ينجح ذلك لأنني بحاجة لتحديد حجم الرأي الناتج (mybitmap.setbounds (..،)) أثناء التحويل وبعض العروض / الارتفاعات في AppWidget غير ثابتة. ربما هناك طريقة للحصول على المرتفعات وغير ذلك الذي فاتني.

استيراد الموارد مباشرة إلى Remoteview باستخدام SetImageViewuri () هذا لا يعمل لأن الوظيفة لا تبدو قراءة Android.Resource: // URI الآن (لقد قمت بدوء في مصدر ImageView ويبدو أنه فقط قراءة مسارات الملفات والمحتوى : // أوري)

استيراد الموارد مباشرة إلى Remoteview باستخدام SetImageViewResource () لم تنجح لأن المعرف المستروع من الحزمة الخارجية من الواضح لا يتضمن مرجعا على الحزمة.

ما أحاول تجنبه هو الترميز الصعب، كل ما عندي عرض AppWidget الخاص بي، أو استخدام نظام تغليف منفصل.

هل قام أي شخص بتنفيذ جلود AppWidget بشكل جيد ويريد مشاركة المعرفة؟ بالتناوب قد يكون هناك ثقب في منطقتي في مكان ما يمكن الإشارة إليه.

يمكنني تقديم رمز إذا لزم الأمر على الرغم من أنني ليس لدي أي هنا الآن.

هل كانت مفيدة؟

المحلول

لقد وجدت حل العينة هذا http://www.siroccosoftware.com/devblog/؟p=10.

imageView.

Uri path = Uri.parse("android.resource://PACKAGE_NAME/RESOURCE_ID");

views.setImageViewUri(ID, path); 

Remoteview.

RemoteViews views = new RemoteViews("PACKAGE_NAME", "LAYOUT_RESOURCE_ID");

نصائح أخرى

ركضت عبر رمز ImageView بينما كنت أحاول إصلاح هذه المشكلة.

اتضح أنه إذا لم يكن URI "محتوى" URI، فحاول ImageView فتحه بمكالمته Drawable.createFromPath(mUri.toString()), ، والتي تريد أساسا مسار بدلا من URI.

إذا قمت بتعليم قسم "الملف: ///" في URI الخاص بك، فسوف يعمل على ما يرام.

لذلك يمكنك تحديث التعليمات البرمجية الخاصة بك على النحو التالي:

views.setImageViewUri(R.id.alarm, Uri.parse(f.getAbsolutePath()); 
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top