بهترین روش درج تصویر بین متن برای ساخت کتاب
اگر قرار باشه متن داخل دایتابیس ، فایل متنی یا هرجایی بره و کاربر قابلیت اضافه داشته باشه ، چه روشی واسه گذاشتن عکس لا به لای متن ، وجود داره ؟ ( ایده میخوام نه سورس )
من خودم :مثلا
"this is a image [image1]"
و ایجاد یک تابع برای خوندن و ایجاد کادر تصویر در زمان اجرا !
شما ؟


نظرت چیه از html استفاده بشه ؟؟؟ به نظرم که خیلی خوبه واسه متن و تصویر با هم ،،،

دوراه داری
1- همون روش html که ساده تره و .... اد تره ! امکاناتی مثل بلوتوث متن و تغییر فونت و سایز و و و در آوردن توش سخت تره واست
2- روش نوشتن برنامه داینامیک که از دیتابیس بخونی و به ازای هر به فرض متنی یک عکسی رو داینامیک اضافه کنی .. به نظرم بخش Custom Spinner رو با دقت ببین خیلی نکاتی هست طلایی و کلیدی که میتونی ازش استفاده کنی .. واقعا استاد آقاجانی بینظیره مطمعن باش با دقت ندیدی چند بار ببین و فک کن برنامتو چجور داینامیگ بنویسی

درسته 4 مــــــــــــــــــــــــاه گذشته ! ، اما خوب خواستم بگم بالاخره فرصت کدنویسی پیش اومد !
- استفاده از html به دلیل اینکه از فونت پشتیبانی مشخصی نمیکنه ، توصیه نمیشه !
- درج تصویر در TextView عملیه و برای درج تصاویر کوچک مناسب تره مثلا جایگزین کردن :) با تصویر لبخند !
- درج تصویر در یک ImageView جداگانه !
3 - در این روش من اومد ورودی رو به این شکل گرفتم :
This is An Image File [LoadImage:'image1.png'] this is Another Image [LoadImage:'image2.png']
و یک Regular experition هم برای تشخیص تصاویر به این شکل
Pattern pattern = Pattern.compile("\\[LoadImage:(.*?)\\]");
خوب حالا به ازای هر تصویر پیدا شده ، یک لایه inflate کردم و تصویر رو فراخوانی کردم ! ، هرجایی که باید متن رو هم نمایش میدادم ، یک نمونه از لایه ی مربوط به متن inflate می کنم
مزایایی که داره :
- می تونیم از یک لایه نمونه بسازیم ، پس همه ی تصاویر و متن ها مثل هم دیگه میشن !
- میتونیم برای هر متن و تصویر لیسنر بنویسیم !
- فونت را کاملا پشتیبانی میکنه :)
- می تونیم هر قسمت از متن رو با HTML یک استایل خاص بدیدم و HTML.FromHTML بارگذاری کنیم :)
- و... !
موفق باشید

من این روش رو پیاده کردم و دقیقا 58 خط شد ، پس خیلی کار سختی نیست و من سورس کد رو نمیزارم تا خودتون بیشتر تلاش کنید :|
این هم آرگمان هایی که به عنوان ورودی میگیرم
private void processText(String text, LinearLayout layoutRoot,int imageLayout, int textLayout) {
// proccess input Text Here !
}
Text : کل متن خوانده شده از پایگاه داده
layoutRoot : یک Linear Layout خالی ، که بعد از پردازش ، تکست ویو و ایمیج ویو (ها) به این لایه addView می شوند. (برای خروجی بهتر ، این لایه را در یک اسکرول ویو قرار میدیم که محتوا اسکرول هم بخوره)
int imageLayout : شماره ی Resource لایه ای هست که قرار هست ازش به عنوان الگوی ساخت تصویر استفاده کنیم.
int textLayout : شماره ی Resource لایه ای هست که قرار هست ازش به عنوان الگوی ساخت متن ها استفاده کنیم.
این هم نحوه ی فراخوانی :
ProccessText( Text, layoutRoot, R.layout.image_style, R.layout.text_style);
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .