PDA

View Full Version : صفحه بندی کتاب اندروید توسط اندروید استودیو



usofts
یک شنبه 25 بهمن 1394, 12:27 عصر
سلام
یه کتاب میخوام بسازم که دوستان لطف کردن و مشکلات قبلیم رو رفع کردن اما مشکل جدیدم اینه که چطوری کتابی که میخوام درست کنم رو صفحه بندی کنم مثلا صفحه یک دو سه و ...
الان البته اینکارو رکدم اما احساس میکنم روش درستش نیست چون ظاهر بدی داره الان یه دکمه پایین هر صفحه گذاشتم و وقتی کاربر روش کلیک میکنه به یه اکتیویتی دیگه که جای صفحه معرفیش کردم هدایت میشه اما موقع کلیک کاربر روی دکمه یه کم برنامه انگار تکون میخوره یه ظاهر نامناسب داره اصلا توسط اندروید استودیو امکان ایجاد کتاب هست؟اگه اره چطوری؟ممنونم

rezaricky
یک شنبه 25 بهمن 1394, 16:59 عصر
سلام .
روشی که استفاده میکنی ، زیاد خوب نیست .
میتونی بجاش هر صفحه رو توی یک متغیر در string.xml ذخیره کنی و بعد یک ارایه از اونا بسازی .
مثال :
<string name="page1">this is page 1</string><string name="page2">and this is page 2</string>


<string-array name="book">
<item>@string/page1</item>
<item>@string/page2</item>
</string-array>

usofts
یک شنبه 25 بهمن 1394, 21:22 عصر
ببخشید مبتدی هستم ممنون از کمکتون اما چیزی نفهمیدم

rezaricky
دوشنبه 26 بهمن 1394, 04:44 صبح
اون کدهای بالایی رو که گقتم توی فایل string.xml میزاری .
بعدش تو اکتیویتی این کار رو میکنی :

public class BookActivity extends Activity {
int index = 0 ;
String[] array;
TextView textview ;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_book);
textview = (TextView) findViewById(R.id.textview);
array = getResources().getStringArray(R.array.book);
textview.setText(array[index]);
}

public void Next() {
index++ ;
if (index < array.length )
textview.setText(array[index])
}

public void Prev() {
index-- ;
if (index >=0)
textview.setText(array[index])
}
}


متدهای Next و Prev هم برای رفتن به صفحه بعدی و قبلی استفاده کن .

usofts
دوشنبه 26 بهمن 1394, 23:05 عصر
خیلی ممنون
اگه بخوام جای صفحه عوض شدن یه صفحه باشه و ارتفاعش زیاد باشه یعنی با لمس صفحه به سمت پایین کشیده بشه و ادامه متن رو نمایش بده باید چیکار کنم؟

rezaricky
سه شنبه 27 بهمن 1394, 04:27 صبح
کل کتاب رو تو یک متغیر ذخیره کن و textview رو هم بزار داخل scrollview و نمایش بده .

<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical">

<TextView
android:id="@+id/tvBook"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="right"
android:lineSpacingExtra="5dp"
android:padding="8dp"
android:scrollbars="vertical"
android:textSize="14sp" />

</ScrollView>

usofts
سه شنبه 27 بهمن 1394, 06:18 صبح
واقعا ممنونم خیلی راحت توسط راهنمایی شما انجام شد البته همین که گفتید توسط
scrollview انجام بدم تو اندروید استودیو شکلکش هست کافی بود بکشمش تو نرم افزارو text رو بندازم توش
بازم ممنون

usofts
سه شنبه 27 بهمن 1394, 09:18 صبح
ببخشید یه مشکل دیگه برام پیش اومد
الان منوی کتاب رو ساختم فقط یه جا گیر کردم اینکه مثلا وقتی روی یکی از گزینه های منو کلیک کنن چطور کاری کنم که یه اکتیویتی خاص رو نشون بده؟الان منوها رو ساختم کامل تموم شده فقط وقتی روش کلیک میشه چیزی نمیشه و همون صفحه اول رو نشون میده

rezaricky
سه شنبه 27 بهمن 1394, 12:15 عصر
وقتی روی باتن کلیک شد ، اکتیویتی رو باز کن؟

usofts
چهارشنبه 28 بهمن 1394, 10:48 صبح
اصلا دکمه و اینا روش نیست وقتی رو منو کلیک میکنم کل منو با هم میشه حساب میشه کدی چیزی نداره بشه بهش گفت اگه مثلا این ایدی یا اسم توی منو کلیک شد این اکتیویتی رو نشون بده؟

asghar2008
چهارشنبه 28 بهمن 1394, 11:17 صبح
اصلا دکمه و اینا روش نیست وقتی رو منو کلیک میکنم کل منو با هم میشه حساب میشه کدی چیزی نداره بشه بهش گفت اگه مثلا این ایدی یا اسم توی منو کلیک شد این اکتیویتی رو نشون بده؟

سلام

شما با استفاده از " onOptionsItemSelected " میتونید به ایتم های منو دسترسی داشته باشید

به عنوان مثال :


public boolean onOptionsItemSelected(MenuItem item) {

int ids = item.getItemId();
switch (ids) {

case R.id.idMenuButton:
// کاری که بعد از زدن دکمه باید انجام بشه
break;
}
return super.onOptionsItemSelected(item);





که در اینجا idMenuButton ، ای دی مربوط به دکمه در منو هست..

usofts
چهارشنبه 28 بهمن 1394, 11:48 صبح
احتمالا قسمتی که اشاره کردید در پروژه من این قسمت باشه درسته؟الان مثلا روی این کد وقتی روی دکمه گالری کلیک میشه چه کدی باید بزارم تا مثلا بره به اکتیویتی
mainactivity
فقط کدی که کاربرو با کلیک ارجاع میده به اکتیویتی میخوام



@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();

if (id == R.id.nav_camara) {
// Handle the camera action
} else if (id == R.id.nav_gallery) {

} else if (id == R.id.nav_slideshow) {

} else if (id == R.id.nav_manage) {

} else if (id == R.id.nav_share) {

} else if (id == R.id.nav_send) {

asghar2008
چهارشنبه 28 بهمن 1394, 13:26 عصر
احتمالا قسمتی که اشاره کردید در پروژه من این قسمت باشه درسته؟الان مثلا روی این کد وقتی روی دکمه گالری کلیک میشه چه کدی باید بزارم تا مثلا بره به اکتیویتی
mainactivity
فقط کدی که کاربرو با کلیک ارجاع میده به اکتیویتی میخوام



بله دقیقا همینه

برای رفتن به اکتویتی جدید از این کد استفاده کن :




Intent intent=new Intent(firstActivity.class,SecondActivity.class);
startActivity(intent);



که در اینجا firstActivity اکتیوتی جاری هست ینی اکتیوتی که الان در اون قرار داریم و SecondActivity هم اکتیوتی هستی که قرار باز بشه..

usofts
چهارشنبه 28 بهمن 1394, 14:22 عصر
ببخشید این کد که دادید رو گذاشتم اما چیزی نشد به این شکل مثلا برای منوی gallery گذاشتم


<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android">

<group android:checkableBehavior="single">
<item android:id="@+id/nav_camara" android:icon="@android:drawable/ic_menu_camera"
android:title="Import" />
startActivity(intent);
<item android:id="@+id/nav_gallery" android:icon="@android:drawable/ic_menu_gallery"
android:title="Gallery" />Intent intent=new Intent(MainActivity.class,activity_main2.class);
<item android:id="@+id/nav_slideshow" android:icon="@android:drawable/ic_menu_slideshow"
android:title="Slideshow" />
<item android:id="@+id/nav_manage" android:icon="@android:drawable/ic_menu_manage"
android:title="Tools" />
</group>

<item android:title="Communicate">
<menu>
<item android:id="@+id/nav_share" android:icon="@android:drawable/ic_menu_share"
android:title="Share" />
<item android:id="@+id/nav_send" android:icon="@android:drawable/ic_menu_send"
android:title="Send" />
</menu>
</item>

</menu>

asghar2008
چهارشنبه 28 بهمن 1394, 15:29 عصر
ببخشید این کد که دادید رو گذاشتم اما چیزی نشد به این شکل مثلا برای منوی gallery گذاشتم


<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android">

<group android:checkableBehavior="single">
<item android:id="@+id/nav_camara" android:icon="@android:drawable/ic_menu_camera"
android:title="Import" />
startActivity(intent);
<item android:id="@+id/nav_gallery" android:icon="@android:drawable/ic_menu_gallery"
android:title="Gallery" />Intent intent=new Intent(MainActivity.class,activity_main2.class);
<item android:id="@+id/nav_slideshow" android:icon="@android:drawable/ic_menu_slideshow"
android:title="Slideshow" />
<item android:id="@+id/nav_manage" android:icon="@android:drawable/ic_menu_manage"
android:title="Tools" />
</group>

<item android:title="Communicate">
<menu>
<item android:id="@+id/nav_share" android:icon="@android:drawable/ic_menu_share"
android:title="Share" />
<item android:id="@+id/nav_send" android:icon="@android:drawable/ic_menu_send"
android:title="Send" />
</menu>
</item>

</menu>


تو فایل xml نباید بذاری.. این کدهارو در قسمت جاوا اکتیوتی بنویس

به این صورت :




@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();

if (id == R.id.nav_camara) {
// Handle the camera action
} else if (id == R.id.nav_gallery) {

Intent intent=new Intent(firstActivity.class,SecondActivity.class);
startActivity(intent);

} else if (id == R.id.nav_slideshow) {

} else if (id == R.id.nav_manage) {

} else if (id == R.id.nav_share) {

} else if (id == R.id.nav_send) {}

usofts
چهارشنبه 28 بهمن 1394, 22:52 عصر
عزیز دست گلت درد نکنه حل شد البته یه قسمتی رو فکر کنم هواست نبود

Intent intent=new Intent(firstActivity.this,SecondActivity.class); startActivity(intent);
این کد جای activity.this نوشته بودید activity.class که لعد یه کم سروکله زدن باهاش اخرش فهمیدن
به هر حال خیلی خیلی ممنون