PDA

View Full Version : سوالات من از کتاب Hello Android



fshb_ 1370
پنج شنبه 09 شهریور 1391, 12:49 عصر
سلام دوستان
من شروع به برنامه نویسی android کردم و کتاب Hello Android رو برای شروع انتخاب کردم. این تاپیک باز کردم تا درطول این کتاب و برنامه هایی که در این کتاب است اگر مشکلی داشتم بپرسم و اگر در آینده کسی خواست شروع کنه بتونه از این تاپیک هم استفاده کنه.
بیشتر مشکلات من در کدها است که معنی اشون نمیدونم و اغلب با سرچ کردن هم پیدا نمیکنم.

برای شروع
من دارم برنامه Sudoku رو مینویسم و خیلی از خط هاش رو منوجه نمیشم

activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@color/background"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:padding="30dip"
android:orientation="horizontal">
<LinearLayout
android:orientation="vertical"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_gravity="center">
<TextView
android:text="@string/main_title"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="25dip"
android:textSize="24.5sp" />
<Button
android:id="@+id/continue_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/continue_label" />
<Button
android:id="@+id/new_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/new_game_label" />
<Button
android:id="@+id/about_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/about_label" />
<Button
android:id="@+id/exit_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/exit_label" />
</LinearLayout>
</LinearLayout>
این خط android:padding="30dip " چی کار میکنه و منظورش چیه؟
چرا من دوتا LinearLayout باید بنویسم؟ و چرا یکیش orientationاش برابر vertical هست و دیگری horizontal؟
این خط یعنی چی؟ android:layout_gravity="center">


امیدوارم با کمک شما دوستان بتونم مشکلاتم حل کنم.
پیشاپیش ممنون:چشمک:

hamid_hr
پنج شنبه 09 شهریور 1391, 13:11 عصر
این padding لایه رو از اطراف صفحه به اندازه اون مقداری که میگی کوچیک میکنه. هر چقدر بیشتر باشه محیط کارت کوچکتر میشه.

اگه بخوای همه ابجکت هات به صورت افقی باشه فقط از یک LinearLayout اصلی که خودش ساخته استفاده میکنی ولی اگر بخوای بین اون ابجکت هات دو تا ابجکت مثلا دو تا دکمه استفاده کنی و اونا رو کنار هم بزاری باید یک LinearLayout بسازی و android:orientation = "horizontal" رو بهش اضافه میکنی

android:layout_gravity="center">
یعنی وسط لایه ایجادش کنی اون شی رو

ببخشید دیگه اطلاعاتم در همین حد بود

fshb_ 1370
پنج شنبه 09 شهریور 1391, 15:20 عصر
ممنون از پاسختون :)
این gravity که گفتین شی ایجاد شده رو وسط لایه ایجاد میکنه. خوب عکس خروجی که کتاب کشیده، main title رو وسط صفحه نگذاشته؟؟
ی سوال مهم تر، من برنامه ساده این (بدون رنگ پس زمینه و ...) ایجاد کردم و رو گوشیم اجرا شد. اما الان این برنامه رو گوشیم اجرا نمشه و گوشیم تو هنگ میره، طوری که حتی وقتی اتصالش با کامپیوتر از بین میبرم باز هم در حالت هنگ و باید گوشی خاموش کنم:( دلیلش چیه؟!!!
راستی برنامه من دو تا warning میده، یکی از خط 9 و یکی 13

This LinearLayout layout or its LinearLayout parent is useless; transfer the background attribute to the other view

Unexpected text found in layout file: """

چطور باید اینا رو رفع کنم؟؟

hamid_hr
پنج شنبه 09 شهریور 1391, 16:00 عصر
کد این خط ها رو بزار

fshb_ 1370
پنج شنبه 09 شهریور 1391, 16:59 عصر
خط 9: <LinearLayout
خط13: android:layout_gravity="center">

hamid_hr
پنج شنبه 09 شهریور 1391, 17:03 عصر
میشه کد کامل بزاری؟

fshb_ 1370
پنج شنبه 09 شهریور 1391, 17:12 عصر
من کد activity_main.xml گذاشتم. پست اول

strings.xml
<resources>
<string name="app_name">Sudoku</string>
<string name="menu_settings">Menue</string>
<string name="title_activity_main">MianActivity</string>
<string name="main_title">Android Sudoku</string>
<string name="continue_label">Continue</string>
<string name="new_game_label">New Game</string>
<string name="about_label">About</string>
<string name="exit_label">Exit</string>

</resources>

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.example.sudoku"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="15" />

<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>

hamid_hr
پنج شنبه 09 شهریور 1391, 17:44 عصر
مگه از setting , manifast رو warrning میده

fshb_ 1370
پنج شنبه 09 شهریور 1391, 21:22 عصر
نه، از activity_main.xml ، ارور میگیره. که اونم تمام کدش رو در پست اول همین تاپیک گذاشتم

fshb_ 1370
جمعه 10 شهریور 1391, 07:47 صبح
ممنون آقا حمید، مشکل اجرای برنامه حل شد. ی بار دیگه کدmain.xml از اول نوشتم و اجرا شد.
اما نمیدونم چرا ما از دو تا LinearLayout استفاده میکنیم؟یکی در خط 2 و یکی در خط 9.
LinearLayout اولی برای رنگ زمینه و محدوده صفحه برنامه در صفحه موبایل است، درسته؟ اما LinearLayout دومی برای چیه؟؟

البته هنوز برنامه یک warning داره از خط 9
This LinearLayout layout or its LinearLayout parent is useless; transfer the background attribute to the other view

fshb_ 1370
شنبه 11 شهریور 1391, 11:08 صبح
کسی نیست جواب بده، این inner LinearLayout برای چیه؟ من سزچ کزدم و در stackoverflow پرسیدم، (زبانم که خوب نیست) اما اینی که من فهمیدم میشه این دوتا را با هم ترکیب کرد و فقط یکLinearLayout داشت و دومی برای مرتب کردن و تنظیم کردن محتویات درونش(یعنی button and text ها)، درسته؟؟ اگر این درسته پسlayout_width وheight در inner Layout برای نحوه قرارگیری button و .. است. پس چرا در خود button و text ما با استفاده از layout_width وhieght اون ها رو مرتب میکنیم.
خواهش میکنم اگر کسی میدونه بگه. من نمیتونم بقیه کتاب بخونم وقتی اولش مشکل دارم:(