ANDROID DISPLAY /RES /FOOLLE في عرض الويب
سؤال
أنا أرمي HTML إلى WebView لتقديمه. في HTML ، أحتاج إلى تحميل صورة لدي فيها /res/drawable
.
أملك /res/drawable/my_image.png
ورمز مثل هذا:
final WebView browser = (WebView) findViewById(R.id.my_webview);
String html = new MyHelper(myObject).getHtml();
browser.loadDataWithBaseURL("", html, "text/html", "UTF-8", "");
حيث السلسلة html
لديه شيء مثل:
<html><head>
<h1>Here is the image</h1>
<img src="my_image.png" />
</head><html>
والسؤال هو ، ماذا يجب أن هذه الصورة src
السمة تكون للإشارة إلى الصورة في /res/drawable
?
المحلول
هذا عمل في Android 2.2
<img src = "file:///android_res/drawable/q1.png" />
حيث Q1.PNG موجود في مجلد RES/Drawable-HDPI
نصائح أخرى
أعترف أنني لا أعرف الكثير عن WebViews / HTML ، لكن يبدو أنك تأخذ الطريق الأكثر تعقيدًا لهذا الغرض. هناك طريقة سهلة لتحميل ملف HTML ؛ ضعه في مجلد الأصول الخاص بك ، ثم يمكن الإشارة إليه على النحو التالي.
WebView webView = new WebView(this);
webView.loadUrl("file:///android_asset/index.html");
setContentView(webView);
من الواضح أن تخطيطك أكثر تعقيدًا لأن لديك أكثر من مجرد عرض ويب بحيث لا يمكنك استخدامه setContentView()
مباشرة ، ولكن هذه هي الفكرة الأساسية. ثم للرجوع إلى صورة في ملف HTML هذا ، استخدمت أ <img>
علامة مثل ذلك:
<img src="res/drawable/icon.png"/>
هل هذا مناسب لك؟
user302750 ،
طريقتك غير صحيحة. res/drawable/banner300.jpg
يجب ان يكون file:///android_res/drawable/banner300.jpg
.
banner300.jpg
يمكن أن يكون في أحد المواقع التالية في مشروعك ، وسيقوم Android تلقائيًا بتحميل الجهاز الصحيح للجهاز الذي تستخدمه.
res/drawable/banner300.jpg
res/drawable-ldpi/banner300.jpg
res/drawable-mdpi/banner300.jpg
res/drawable-hdpi/banner300.jpg
res/drawable-xhdpi/banner300.jpg
ال assets
المجلد مخصص للموارد العامة التي لا تحتاجها إلى إصدارات مختلفة من. قد يكون مثال على قالب XSL ، أو شيء من هذا القبيل.
Mikenereson ، ردك على مشكلتك غير صحيحة أيضًا ، وينبغي أن تكون الموارد القابلة للرسم في res
الدليل.
إليك مثال من مشروعي الخاص. أخرج HTML ، تمامًا مثل هذا:
<img src="file:///android_res/drawable/stats_btn.png"/>
إذا كنت تستخدم ldpi
الجهاز ، أحصل على ldpi
الصورة ، إذا كنت تستخدم hdpi
أو mdpi
, ، أحصل على واحد مناسب لمن هم كذلك. Android يحل file:///android_res/drawable/stats_btn.png
إلى أحد الموارد التالية التي لدي في مشروعي.
./res/drawable-ldpi/stats_btn.png
./res/drawable-hdpi/stats_btn.png
./res/drawable-mdpi/stats_btn.png
من اختباراتي المسار ، "الملف: ///android_res/drawable/q1.png" يعمل فقط مع 2.2+. لـ 2.1 الذي يعطي ملفًا غير موجود. سيعمل نقل المورد إلى الأصول ، لكن هذا غير ممكن حقًا إذا كنت ترغب في الاستفادة من الميزات القابلة للسحب (مما يعني أنك تحتاج إلى نسخة من الصورة في كل مجلد ...).
الإجابات التي تنطوي على ملف: // urls قد لا تعمل بعد الآن من Android 4.0. انظر الإجابة على هذا السؤال. الطريقة التي ستعمل في الإجابة هنا.
لدي نفس المشكلة بالضبط ، ولكن لا وضع ملف الصورة في res/drawable
(الذي كان عليّ أن أقوم بإنشائه أولاً ، كان لدي Hust Drawable -HDPI و -LDPI و -MDPI موجود بالفعل) أو باستخدام file:///asset/
url عملت بالنسبة لي.
هذا ما أفعله:
نشاط:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
String summary = "<html><body><div style=\"background:red; width:300px; height:50px;\"></div><img src=\"res/drawable/banner300.jpg\"/></body></html>";
mWebView.loadData(summary, "text/html", "utf-8");
ثم في res/drawable
لقد وضعت banner300.jpg - لكنها لا تظهر. أيه أفكار؟
يمكنك تحميل الأقراص كما تفعل في أي مكان آخر في الكود الخاص بك ...http://developer.android.com/guide/topics/resources/drawable-resource.html
Resources res = getResources();
Drawable drawable = res.getDrawable(R.drawable.myimage);
أيضًا mikenereson باستخدام Android ، يمكنك فقط الوصول مباشرة إلى الملفات الخام الموجودة في دليل الأصول و SDCard.