آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

مشورت در خصوص یک Custom View

حمید زمانی  10 سال پیش  10 سال پیش
+3 0

سلام
اخیرا نرم افزاری از پلی استور دانلود کردم ، تحت عنوان طاقچه (لینک اپلیکیشن تو سایتش هست) ، نرم افزاره جالبیه ، جالب ترین قسمت این نرم افزار برای من ، قسمتی هست که در آن کتاب را مطالعه می کنیم (عکسش رو در زیر قرار دادم) ، سعی کردم یک چنین چیزی پیاده سازی کنم و حدود 90% کار رو انجام دادم ، اما می خواستم ببینم دوستان بغیر از راه حل من ، راه حل بهتری به ذهنشون میرسه یا خیر.

راه حل من :
یک ViewPager ایجاد می کنیم و یک TextView داخل آن می اندازیم.
تعداد خط هایی که یک TextView می تواند در یک صفحه داشته باشد ، در حدی که به Scroll نرسد را حساب می کنیم.
بعد آرایه ای از خط ها می سازیم ، و اونو به Adapter ویوپیجر پاس میدیم و تو Adapter میگیم که مثلا برای صفحه اول 8 تا خط اول رو بده ، برای صفحه دوم 8 تا خط دوم رو بده و ...
در زمان تغییر ساز متن و... هم دوباره Adapter ویوپیجر رو Newمیکنم و مقادیر رو بهش پاس میدم (راه های دیگه ای هم بود اما این برای اینجا بهتره به نظرم)

نکته :
- این یک ویو ساده با یک TextView ساده نیست که بگیم یه تکست ویو میندازیم تو یه ویو پیجر و دیگه تموم ، شما اگه سایز متن رو کوچک کنید ، به هیچ وجه خط اول صفحه ای که در آن هستید ، به صفحه قبل نمی رود که این نکته یکی از تکنیکی ترین نکته های این ویو هستد ، منم همین تکنیک رو پیاده کردم اما بدلیل پردازش زیاد String یکم برنامه کند اجرا میشه.
- نکته بعدی یکسان نبود سایز عنوان مطالب و متن هاست.
- نکته بعدی وجود فضای خالی میان فصل های یک کتاب هست که میزانش مشخص نیست.
و خیلی نکات دیگر




با تشکر
حمید زمانی

0 0
up (10 سال پیش)
+2 0
دقیقا این برنامه تعداد خطوط رو میشماره و نمایش میده ، کمترین خطوط 9 تا و بیشترین 25 تا هست ، که توی حالت landScape تعداد خطوط 4 و 12 هست ، در مورد اینکه چطور متن ابتدایی صفحه تغییری نمیکنه ، باید روی های مختلف رو تست کرد از SubString گرفته و یا اینکه کل داستان رو به بخش های مختلف (تعداد صفحات با توجه به تعداد خطوط) تقسیم کرده باشیم مثلا اگر توی صفحه 2 هستیم کافیه روی خطوط این صفحه و صفحه 3 پردازش انجام بشه ، بعد از پردازش داستان دوباره برابر با تعداد خطوط قسمت بندی میشه و میتونیم با توجه به صفحات هر قسمت رو نشون بدیم ، (مثلا کل داستان 90 خط هست برابر 10 صفحه) توی صفحه 2 باید خطوط 18 تا 27 رو پردازش کنیم و صفحه 3 خطوط 27 تا 36 (10 سال پیش)
+3 0
خب Criss جان ، من همین روش رو طی کردم ، اما شما تو تمام مراحل نیاز به پردازش String داری که نسبتا کاره سنگینیه مخصوصا اگه کتاب به 1000 یا 2000 صفحه برسه ، قبل از اینکه صفحه به صفحه پردازش کنیم ، باید بدونیم تو این گوشی ، چند تا خط در صفحه جا میشه جا میشه (تبلت و گوشی میزان خط هاشون یکی نیست) ، در ضمن تعداد کاراکتر های موجود در هر خط متفاوت می باشد و یکسان نیست ، تمام این حرف ها به کنار وسط کار پیش میاد که بخوایم سایز متن رو کم و زیاد کنیم ، فونت رو عوض کنیم ، فاصله بین خطوط رو کم زیاد کنیم و.. که همه ی اینا باعث میشن محاسبات بهم بریزه مثلا تویه گوشی معمولی با سایز متن 16 ، 10 خط جا میشه ولی با سایز 24 ، 6 خط جا میشه ، من این روش رو پیاده سازی کردم ، اما می خواستم بدونم دوستان با چه روشی پیاده سازی می کنن. (10 سال پیش)
+1 0
راهکار خیلی عالی بود جناب زمانی. اما یه نکته که من از سایتای خارجی متوجهش شدم که البته مستقیما ربطی به موضوع شما نداشت. اما الگوریتمش جالب بود. میگفت هیچ داده ای که نیازی به نمایش فعلی نداره نباید لود بشه. باید اون داده ها تو پوشه برنامه به صورت زیپ شده وجود داشته باشه و یک آی دی به هر داده اختصاص بدیم و در موقع لزوم از حالت فشرده دربیاد و اون موقع لود بشه. این باعث میشه رم دستگاه بیخودی پر نشه و همچنین حافظه ی گوشی کمتر اشغال میشه. اما در مورد بحث شما، اگه بخوایم به این روش بریم باید حداقل صفحه ی بعدی رو آماده لود کرده باشیم نه همه صفحات رو. فقط هر صفحه جلو رفتیم صفحه بعدترش لود بشه الی آخر. بابت فضولی ببخشید و ممنونم بابت پست قشنگتون (10 سال پیش)
 برای این سوال پاسخی وجود ندارد.

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .