انجمن سایت کلیدستان


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
ذخیره آخرین صفحه خوانده شده یک کتاب (در برنامه نویسی اندروید)

ذخیره آخرین صفحه خوانده شده یک کتاب (در برنامه نویسی اندروید)

#5
دوست عزیز به نظرمن یکی از راه حلهایی که میتونه به شما کمک کنه.
اینه  که ابتدا یک شی Scroll توی فایل جاوا بسازید و متن طولانیتون رو بهش پاس بدید.
کد پی‌اچ‌پی:
ScrollView scrollView;
float scrollSpot;
protected 
void onCreate(Bundle savedInstanceState) {

    
textView.setText("my text is long...");
    
scrollView = new ScrollView(this);
    
scrollView.addView(textView);



حالا میتونید از دو متد SetScrollSpot (برای ست کردن پوزیشن هنگام نمایش تکست ویو که باید در متد oncreate صدا بزنید)
کد پی‌اچ‌پی:
scrollView.post(new Runnable() {
        public 
void run() {
            
setScrollSpot(scrollSpot);
        }
    }); 


و از متدgetScrollSpot (برای ذخیره کردن پوزیشن آخرین اسکرول که این متد رو باید هنگام ازبین رفتن اکتیویتی صدا بزنید.
کد پی‌اچ‌پی:
protected void onDestroy() {
    
scrollSpot getScrollSpot();

بدنه  این دومتد هم در زیر اومده (زیاد با ساختار بدنه کلنجار نرید، و احتیاجی نیست. فقط بدونید متد get  براساس پوزیشن scroll   یه مقدار float  بر میگردونه).
کد پی‌اچ‌پی:
private float getScrollSpot() {
    
int y scrollView.getScrollY();
    
Layout layout textView.getLayout();
    
int topPadding = -layout.getTopPadding();
    if (
<= topPadding) {
        return (float) (
topPadding y) / textView.getLineHeight();
    }

    
int line layout.getLineForVertical(1) + 1;
    
int offset layout.getLineStart(line);
    
int above layout.getLineTop(line) - y;
    return 
offset + (float) above textView.getLineHeight();
}

private 
void setScrollSpot(float spot) {
    
int offset = (int) spot;
    
int above = (int) ((spot offset) * textView.getLineHeight());
    
Layout layout textView.getLayout();
    
int line layout.getLineForOffset(offset);
    
int y = (line == ? -layout.getTopPadding() : layout.getLineTop(line))
        - 
above;
    
scrollView.scrollTo(0y);

این روش بالا میتونه تاحدی بهتون کمک کنه..روشهایی دیگه هم هست که روشهای دیگه یا پیچیده تر هستند یا باگهای خاص خودش داره..میتونید روشهای دیگه رو در سایت StackOverflow پیدا کنید.
پاسخ
 سپاس شده توسط admin ، مهران ، شماره مجازی امارات ، تلگرام ضد فیلتر 2023


پیام‌های این موضوع
RE: ذخیره آخرین صفحه خوانده شده یک کتاب (در برنامه نویسی اندروید) - توسط داش بهروز - ۱۳۹۴/۰۳/۱۴, ۰۳:۳۹ ب.ظ

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان