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


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

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

#1
با سلام خدمت اساتید و همه ی کاربران

من یک کتاب اندروییدی ساختم که این دوتا مشکل را دارم لطفا کمکم کنید
1_وقتی مثلا یک متن طولانی در کتاب را می خوانم و دکمه خروج را می زنم هنگام اجرای دوباره کتاب متن داستان از اول شروع میشه چگونه میشه هنگامی که کاربر برنامه را اجرا کرد و یک متن یا داستانی که قبلا خوانده به همان صفحه برود و متن از سر گرفته نشود در واقع آخرین صفحه خوانده شده ذخیره شود.
2_چگونه می توانم موضوعات را دسته بندی کنم مثلا  داستان ها , اس ام اس و...لطفا راهنمایی فرمایید مبتدی هستم.
پاسخ

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

#2
سلام.

(۱۳۹۴/۰۳/۰۳, ۱۲:۲۷ ق.ظ)'مهران' نوشته: 1_وقتی مثلا یک متن طولانی در کتاب را می خوانم و دکمه خروج را می زنم هنگام اجرای دوباره کتاب متن داستان از اول شروع میشه چگونه میشه هنگامی که کاربر برنامه را اجرا کرد و یک متن یا داستانی که قبلا خوانده به همان صفحه برود و متن از سر گرفته نشود در واقع آخرین صفحه خوانده شده ذخیره شود.
 

نمیشه نظر کلی داد و باید بفرمایید که ساختار نمایش اطلاعات برنامه اندروید شما به چه صورت می باشد.

(۱۳۹۴/۰۳/۰۳, ۱۲:۲۷ ق.ظ)'مهران' نوشته: 2_چگونه می توانم موضوعات را دسته بندی کنم مثلا  داستان ها , اس ام اس و...لطفا راهنمایی فرمایید مبتدی هستم.
 

دو Activity خواهیم داشت که هر کدام، دارای ListView است. در Activity اول، با ListView ، فهرست موضوعات را نمایش می دهیم. با اشاره کاربر روی یک item از ListView ، به Activity دوم می رود و شماره متناظر با موضوع را به ان ارسال می کنیم. در Activity دوم، بر اساس شماره دریافتی، فهرست مبحث ها را فراخوانی کرده و در ListView نمایش می دهیم.

برای ساخت ListView سفارشی، کلید زیر را بخوانید :

کلید شماره 843

برای ارسال مقدار بین Activity ها، کلید زیر را بخوانید :

کلید شماره 236

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

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

#3
سلام  مجدد
با تشکر از جواب شما
و اما (سوال شماره یک ):
ساختار نمایش اطلاعات برنامه به این صورت است که یک listView  دارم که با کلیک بر روی آن اطلاعات را از دیتابیس می خواند و در یک صفحه دیگر نمایش میدهد بفرمایید چطور می توانم موقعیت صفحه را ذخیره کنم که هنگام خروج و اجرای دوباره برنامه مو قعیت متن خوانده شده حفظ شود و به اول صفحه بر نگردد.
لازم به ذکر است که از اسکرول برای نمایش متن استفاده می کنم.
 
پاسخ

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

#4
یعنی انقد این کار سخته؟

لطفا یکی جواب بده...
پاسخ

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

#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


پرش به انجمن:


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