ورود

View Full Version : دريافت ميزان اسكرول (براي ادامه مطالعه متن توسط كاربر)



Amin-rz
چهارشنبه 19 شهریور 1393, 23:30 عصر
سلام.
يه تكست ويو رو داخل يه اسكرول گذاشتم.
متن تكست ويو يه مقاله خيلي طولاني هست.
مي خوام وقتي كاربر از برنامه خارج شد موقعيت اسكرول رو بگيرم تا وقتي به برنامه وارد شد براي خوندن ادامه مقاله به همون قسمت اسكرول كنم.

چه راهكاري پيشنهاد ميديد؟
مي خوام طوري باشه كه با تغيير ميزان اسكرول سريعا مقدار اسكرول ثبت بشه.
و نياز به زدن دكمه نباشه براي ثبت مكان فعلي.
يه چيزي مثلا مثل OnScrollChangedListener
:D

اگه روش ديگه اي براي خوندن متن هاي طولاني بلديد كه كاربر بتونه سريعا به آخرين مكان مطالعه شده بره يا بدونه تا كجا قبلا خونده, بگيد ممنون ميشم.

Amin-rz
پنج شنبه 20 شهریور 1393, 11:27 صبح
با onDrag هم درست نشد.

Amin-rz
پنج شنبه 20 شهریور 1393, 13:56 عصر
روشی نیست که به محض تغییر اسکرول , وضعیتشو سیو کنم؟

pouya1999best@g
پنج شنبه 20 شهریور 1393, 16:23 عصر
من بلد نیستم و سوال من هم هست؛اما روش بهترش اینه که وقتی کلید بک زده شد،موقعیت اسکرول گرفته بشه و سیو شه

majnoon110
پنج شنبه 20 شهریور 1393, 17:21 عصر
یه جایی دیدم ازین توابع استفاده کرده بود

یه امتحانی بکن


scrollX = scrollView.getScrollX();
scrollY = scrollView.getScrollY();

برای اینکه بدون دکمه هم ذخیره بشه باید توی متد ondestroy مقادیر ذخیره بشه

Amin-rz
پنج شنبه 20 شهریور 1393, 19:05 عصر
توابع همينا هستن.و مشكلي با ذخيره در shared p ندارم.
فقط نميدونم كجا بذارمشون كه به محض خروج كاربر ، وضعيت اسكرول رو ذخيره شده داشته باشم.
متد onDestroy چطوري نوشته ميشد كاملش؟

Amin-rz
پنج شنبه 20 شهریور 1393, 19:43 عصر
تو onDestroy گذاشتم ارور میده.یعنی موقعی که تو برنامه دو بار کلید back رو میزنم یا دکمه منو رو میزنم onDestroy رو ارور میده و برنامه متوقف میشه.
اینم کدهام:

@Override
protected void onDestroy() {
// TODO Auto-generated method stub

final ScrollView scrollviewHome = (ScrollView) findViewById(R.id.scrollViewHome);

Editor editor = sharedpreferences.edit();
editor.putInt("scrollX", scrollviewHome.getScrollX());
editor.commit();
editor.putInt("scrollY", scrollviewHome.getScrollY());
editor.commit();

super.onDestroy();
}


اضافه کنم که کدهام درسته چون تو onClickListener یه دکمه میزارم درست عمل می کنه ولی تو onDestroy نه.

ali-star
پنج شنبه 20 شهریور 1393, 22:17 عصر
بفرما دوست عزیز اینو تازه برای شما درست کردم.

دانلود (http://s5.picofile.com/file/8140216868/ResumeReading.zip.html)

Amin-rz
جمعه 21 شهریور 1393, 11:08 صبح
ممنون داداش.
ولي
چند سطر مي خونم و ميرم پايين بعد از برنامه خارج ميشم.
دوباره كه وارد ميشم ادامه مطالعه رو ميزنم, ولي عمل نمي كنه.
كد كار نميده.فقط پيغام "ok 0" ميده.
كلا كد خودم رو هم تو onPause ميذارم كار نميده.

چطور ميتونم يه دستور رو هر 10 ثانيه يه بار انجام بدم؟

ali-star
جمعه 21 شهریور 1393, 11:31 صبح
کار میکنه تازه هم دوباره امتحانش کردم.
اول روی مطالعه کلیک کنید بعد یکم برید پایین بعد کلید برگردید به اکتیویتی قبلی یه Toast نمایش داده میشه که تو یه عدد نوشته شده این عدد موقعیت اسکرول هست بعد وقتی روی ادامه مطالعه کلیک کنید یه OK با اون عدد نمایش داده میشه و بعد از 100 میلی ثانیه به ScrollView موقعیت قبلی خودش بر میگرده.

Amin-rz
جمعه 21 شهریور 1393, 13:14 عصر
اين در صورتي هست كه برگردي به اكتيويتي قبل.
برنامه من يه اكتيويتي داره.
بعلاوه شايد كاربر دكمه Home رو بزنه كه از برنامه خارج بشه.

ali-star
جمعه 21 شهریور 1393, 13:21 عصر
اين در صورتي هست كه برگردي به اكتيويتي قبل.
برنامه من يه اكتيويتي داره.
بعلاوه شايد كاربر دكمه Home رو بزنه كه از برنامه خارج بشه.

نه خیر حتی اگه کلید Home رو هم بزنی باز هم موقعیت اسکرول حفظ میشه چو ما اینو توی onPause انجام میدیم.

Amin-rz
جمعه 21 شهریور 1393, 13:39 عصر
پس چرا واسه من فقط 0 ذخيره ميشه؟!

raha_jon
جمعه 21 شهریور 1393, 14:05 عصر
کار میکنه
چطور میشه اینو برای بانک اطلاعاتی بکار گرفت؟!
یعنی به هر مطلب که میری ذخیره بشه موقعیتش

ali-star
جمعه 21 شهریور 1393, 22:37 عصر
پس چرا واسه من فقط 0 ذخيره ميشه؟!

من روی امولاتور ۲.۳.۳ امتحانش کردم خوب کار می کنه...

ali-star
جمعه 21 شهریور 1393, 22:44 عصر
کار میکنه
چطور میشه اینو برای بانک اطلاعاتی بکار گرفت؟!
یعنی به هر مطلب که میری ذخیره بشه موقعیتش

منظورت آخرین مطلب خوانده شده هست؟

Amin-rz
شنبه 22 شهریور 1393, 00:30 صبح
من روی امولاتور ۲.۳.۳ امتحانش کردم خوب کار می کنه...

دمت گرم كار داد.
فقط من متوجه نميشم اين قسمت از كد چكارست اين وسط تو onPause؟
Sp = getSharedPreferences("scroll",0);

چون مثلا من تو رويداد onClick كه مي خوام مقداري تو sharedpreferences ذخيره كنم بدون اين كد انجام ميدم مشكلي هم پيش نمياد.

raha_jon
شنبه 22 شهریور 1393, 07:51 صبح
منظورت آخرین مطلب خوانده شده هست؟

نه وقتی داخل مطلبی میره موقعیت سکرول ان مطلب را ذخیره کنه

ali-star
شنبه 22 شهریور 1393, 10:16 صبح
دمت گرم كار داد.
فقط من متوجه نميشم اين قسمت از كد چكارست اين وسط تو onPause؟
Sp = getSharedPreferences("scroll",0);

چون مثلا من تو رويداد onClick كه مي خوام مقداري تو sharedpreferences ذخيره كنم بدون اين كد انجام ميدم مشكلي هم پيش نمياد.

من اینو برای محکم کاری گذاشتم تو onCreate فقط بزاری کافیه...

ali-star
شنبه 22 شهریور 1393, 10:17 صبح
نه وقتی داخل مطلبی میره موقعیت سکرول ان مطلب را ذخیره کنه

یه نسخه دیگه درست کردم ببین مشکلت حل میشه...

دانلود (http://s5.picofile.com/file/8140436442/ResumeReading.zip.html)