سلسلة تعلم برمجة تطبيقات الأندرويد .. الدرس السادس

مرحبا من جديد.. وأعتذر على التأخر في طرح هذه الحلقة، ونعدكم بطرح مكثف نسبيا في الأيام القادمة 🙂

لنبدأ!
نلاحظ أننا في الدروس السابقة كنا نضع الأزرار والحقول النصية وغيرها من العناصر التي تستقبل مدخلات من المستخدم أو تعرض نتائجا له (وتسمى Widgets) بداخل وسم في ملف الXML واسمه LinearLayout. هذا الوسم يمثل وعاء Container توضع في داخله الأزرار وال Widgets الأخرى. ولكنه ليس الوسم الوحيد المستخدم.

سنتعرف في هذا الدرس على وظيفة و كيفية إنشاء ما يلي:

١- وعاء <LinearLayout>

٢- وعاء <TableLayout>

٣- وعاء <ScrollView>

١- وعاء <LinearLayout>

لدينا عادة الخصائص\العناصر التالية:

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

بالنسبة لخاصية التوجه Orientation يتم عبرها تحديد طريقة رصف الأزرار وال Widgets في الصفحة. الوضع الرأسي Vertical يعني وضع العناصر بشكل عمودي، أما Horizontal فيعني صفها بشكل أفقي.

خاصية layout_width مسؤولة عن تحديد عرض الوعاء، ونحن في هذه الحالة نريد من الوعاء ملأ الشاشة واحتلال جميع المساحات، لذلك نختار fill_parent.

خاصية layout_height يتم عبرها تحديد ارتفاع الوعاء، وأيضا نريده ملأ المساحات كاملة.

نقوم الآن بإنشاء زر لنرى كيفية التحكم بطريقة ظهوره في واجهة التطبيق.

<Button

android:text="@+id/Button01"

android:id="@+id/Button01"

android:layout_width="wrap_content"

android:layout_height="wrap_content">

</Button>

بالنسبة للخاصية الأولى، android:text فهي المسؤولة عن تحديد النص المراد ظهوره على الزر. android:id تقوم بإعطاء رقم خاص للعنصر يميزه عن غيره. بالنسبة للخاصيتين الأخيرتين فقد تم شرحهما في الأعلى، ولكني سأتعرض للقيم التي من الممكن إعطاءها لهما. هناك ٣ احتمالات. الأول fill_parent الذي يقوم بملىء المساحة الخالية بالزر بحسب الخاصية التي أعطي لها (layout_width أو layout_height). الثاني هو wrap_content والذي يقوم بضغط حجم الزر بحسب محتواه النصي. الاحتمال الثالث هو أن يتم تحديد الارتفاع والعرض بمقياس البيكسل.

مثال للحالة الأولى والثانية (سيملأ الزر المساحات المجاورة له بالعرض، ولكن ارتفاعه سيكون مضغوطا):

<Button

android:text="Ardroid"

android:id="@+id/Button01"

android:layout_width="fill_parent"

android:layout_height="wrap_content">

</Button>

(قم بتجربة الاحتمالات الأخرى، ويمكنك الاستعانة بتبويب Layout لاستعراض نتيجة التصميم بدلا من تشغيل التطبيق في كل مرة.. كما يمكنك استخدام هذه الواجهة لتصميم صفحة النشاط في التطبيق دون كتابة كود ال XML في كل مرة)

مثال للحالة الثالثة:

<Button

android:text="Ardroid"

android:id="@+id/Button01"

android:layout_width="300px"

android:layout_height="100px">

</Button>

سنقوم بإضافة زر ثانٍ، ولكننا نريد وضعه الآن بجانب الزر الأول. كيف نقوم بذلك؟ لا ننس الخاصية الأولى الخاصة بوعاء LinearLayout وهي Orientation. نقوم بتعديلها ليتم عرض ال Widgets بشكل أفقي:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="horizontal"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

والزر الثاني (قم بتسميته بنفس اسم الزر السابق):

<Button

android:text="Ardroid"

android:id="@+id/Button02"

android:layout_width="wrap_content"

android:layout_height="wrap_content">

</Button>

سنقوم الآن بالتعرف على خاصية الوزن android:layout_weight والتي تقوم بإعطاء أولوية نقوم بتحديدها لأحد الزرين ليحتل أعلاهما أولوية كمية أكبر من المساحات الفارغة. فمثلا:

<Button

android:text="Ardroid"

android:id="@+id/Button01"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_weight="1"

>

</Button>

<Button

android:text="Ardroid"

android:id="@+id/Button02"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_weight="2"

>

</Button>

هناك عدد من الخصائص الأخرى والتي يتم عبرها التحكم بطريقة وضع ال Widgets فلدينا مثلا android:layout_agravity وهي مناسبة أكثر في حالة التعامل مع الWidgets عند رصفهم رأسيا ونقوم عبرها بالتحكم بخاصية المحاذاة alignment التي سيكون عليها الزر مثلا. وفي حال أردنا التحكم بالمحاذاة في طريقة الرصف الأفقية، فمن الأفضل استخدام android:layout_marginLeft وتحديد عدد النقاط Pixels التي تفصل بين الزر والآخر.

مثال على android:layout_marginLeft في حالة الرصف الأفقية android:orientation=”horizontal” :

<Button

android:text="Ardroid"

android:id="@+id/Button02"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginLeft="180px"

>

</Button>

ومثال على android:layout_gravity بالوضع الرأسي android:orientation=”vertical”:

<Button

android:text="Ardroid"

android:id="@+id/Button02"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="right"

>

</Button>

طبعا نلاحظ القائمة المنسدلة والتي تحوي عددا من القيم التي يمكنكم تجربتها ورؤية تأثيرها.

قوموا بتجربة خصائص أخرى كال android:gravity و android:paddingLeft وغيرها ولاحظوا تأثيراتها.

في نهاية هذا القسم، تجدر الإشارة الى أنه يمكننا تغيير خاصية توجه\وضع الوعاء Orientation أثناء عمل التطبيق. فمثلا يمكننا برمجة التطبيق بأن يقوم بتغيير التوجه ليصبح بالوضع الأفقي عند ضغط زر. تتم هذه العملية باستدعاء دالة

x.setOrientation(LinearLayout.HORIZONTAL);

حيث x هي اسم ال Widget ، زر مثلا.

٢- وعاء <TableLayout>

يأخذ هذا الوعاء شكل الجدول. لذا، فإننا نستخدم وسم >TableRow< كلما أردنا إنشاء صف جديد. يتميز هذا الوعاء بعدد من الخصائص:

أ- android:layout_span  : وهي خاصية تحدد المدى الذي نود أن يحتله العنصر، وتأخذ قيمة عددية. القيمة العددية تحدد بشكل غير مباشر عدد الأعمدة Columns داخل الصف.

ب- android:layout_column : وهي خاصية تحدد رقم العمود الذي سيتوضع عنده العنصر Widget. وترقيم الأعمدة يبدأ من الصفر، بمعنى أن أول عمود رقمه صفر، وهكذا.

ج- android:stretchColumns : وهي خاصية محصورة بالوعاء نفسه (أي لا يمكن تطبيقها على العناصر Widgets  ) وهي تعمل على شد العمود ليغطي المساحاة الفارغة، وتأخذ قيمة عددية تحدد رقم العمود.

د- android:shrinkColumns : وهي عكس الخاصية السابقة.

مثال توضيحي:

للحصول على التصميم التالي:

نستعمل الكود:

<?xml version="1.0" encoding="utf-8"?>

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:stretchColumns="2"

>

<TableRow>

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Hello!"

android:layout_column="2"

android:layout_gravity="center"

/>

</TableRow>

<TableRow>

<SeekBar

android:id="@+id/SeekBar01"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_span="2"

android:layout_column="1">

</SeekBar>

</TableRow>

<TableRow>

<Button

android:text="Ardroid"

android:id="@+id/Button01"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_column="2"

>

</Button>

<CheckBox

android:text="checkBox"

android:id="@+id/CheckBox01"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_column="0"

>

</CheckBox>

</TableRow>

<TableRow>

<RadioButton

android:text="Radio Button"

android:id="@+id/RadioButton01"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

>

</RadioButton>

</TableRow>

</TableLayout>

٣- وعاء <ScrollView>

نستعمل هذا الوعاء في حالة كان المحتوى الذي نود عرضه في الصفحة كبيرا بحيث أنه لا يمكن وضعه في صفحة واحدة. طريقة عمله سهلة وهي تضمين التصميم الذي نرغبه بداخله. فمثلا، يمكننا وضع الكود الذي كتبناه في الأعلى بداخله (بعد إضافة عدد من العناصر Widgets حتى يتطلب عرض المحتوى أكثر من صفحة).

<?xml version="1.0" encoding="utf-8"?>

<ScrollView

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="wrap_content">

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:stretchColumns="2"

>

<TableRow>

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Hello!"

android:layout_column="2"

android:layout_gravity="center"

/>

</TableRow>

<TableRow>

<SeekBar

android:id="@+id/SeekBar01"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_span="2"

android:layout_column="1">

</SeekBar>

</TableRow>

<TableRow>

<Button

android:text="Ardroid"

android:id="@+id/Button01"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_column="2"

>

</Button>

<CheckBox

android:text="checkBox"

android:id="@+id/CheckBox01"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_column="0"

>

</CheckBox>

</TableRow>

<TableRow>

<RadioButton

android:text="Radio Button"

android:id="@+id/RadioButton01"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

>

</RadioButton>

</TableRow>

<TableRow>

<RadioButton

android:text="Radio Button"

android:id="@+id/RadioButton01"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

>

</RadioButton>

</TableRow>

<TableRow>

<RadioButton

android:text="Radio Button"

android:id="@+id/RadioButton01"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

>

</RadioButton>

</TableRow>

<TableRow>

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Hello!"

android:layout_column="2"

android:layout_gravity="center"

/>

</TableRow>

<TableRow>

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Hello!"

android:layout_column="2"

android:layout_gravity="center"

/>

</TableRow>

<TableRow>

<SeekBar

android:id="@+id/SeekBar01"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_span="2"

android:layout_column="1">

</SeekBar>

</TableRow>

<TableRow>

<SeekBar

android:id="@+id/SeekBar01"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_span="2"

android:layout_column="1">

</SeekBar>

</TableRow>

<TableRow>

<SeekBar

android:id="@+id/SeekBar01"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_span="2"

android:layout_column="1">

</SeekBar>

</TableRow>

</TableLayout>

</ScrollView>

بقي لدينا وعاء آخر وهو <RelativeLayout> وسأتكلم عنه في درس لاحق إن شاء الله..

أتمنى أن يكون هذا الدرس قد أعجبكم.. 🙂

بالتوفيق..

وائل العلواني

وائل العلواني.. مدون سوري ومطور تطبيقات أندرويد.. مهتم بالتقنية وآخر تطوراتها.. يعمل في شركة خاصة في مجال تقصي الأعمال BI وتعدين البيانات Data Mining

التعليقات: 53 ضع تعليقك

شكر الله لك. بصراحة انا مش قادر اعبر عن فرحتي باني فيه ناس ممتازة زيك كده بتهتم انها تقدم للمبرمجين العرب تطبيقات خاصة بالاندرويد .
في انتظار المزيد

Red manc يقول:

يعطيك العافية أخي .. غريب أن عدد الردود لم يتجاوز الواحد !!

في الواقع ، مازال أمامي كمية جيدة من العمل بأساسيات البرمجة قبل متابعة دروسك
أتمنى حينها أن أرى دروسك مازالت مستمرة و ألا يتسرب لك اليأس بسبب قلة التعليقات أو ما شابه

شكراً مرة أخرى

شكرا لك أخ محمد فرماوي وأخ Red manc..

بالتوفيق في تعلمك للبرمجة 🙂 وان شاءالله السلسلة مستمرة ولكني حاليا أمر بضغط دراسي هائل يمنعني من العمل على السلسلة.. ولكن العودة قريبة..

تحياتي..

باحث تقني يقول:

مرحبا اخ وائل شكرا جزيلا لكل المعلومات اللي تقدمها ………….
………
بس حابة استفسر عن الطريقة اللي نحفظ فيها المشروع بحيث نستطيع نرسلة للفون ويتم استخدامه …….بمعنى آخر انا استفسر عن الببلش للمشروعز

السلام عليكم ورحمه الله
اولا انا جد فخور كعربي بك يا اخي وائل.
كما اريد ان احييك على هذه البادره الطيبه.
انا حاليا احاول تطوير برنامج اندرويد.
و حاليا تواجهني مشكله احاول ايجاد حل لها.
انا اريد ان اقرا من server tomcat
باستعمال http
اذن اريد من خلال الرابط ان اضع سلسه الحروف في متغير من نوع سلسله حروف(String)
و شكرا على المساعده.

وعليكم السلام ورحمة الله.. أشكرك جدا أخي محمد وأعتذر على الرد المتأخر، كوني لم ألحظه..
بصراحة لم أعمل بعد على جزئية ربط التطبيق بموقع الكتروني عبر http.. ولكن لو فصلت المشكلة أكثر، ربما ساعدتك بإيجاد حل لها على الانترنت.. تحية ومعذرة من جديد 🙂

ahmed tarik يقول:

انا اريد ان اعرف هل تطبيقات الاندرويد تتم عن طريق لغة Java SE ام بــ Java EE

لا تتم لا بهذه و لا بالاخرى بل ب java مع SDk android

Java SE و Java EE تمثلان نفس اللغة، فالثانية موجهة للشركات والتطبيقات الضخمة، وتختلف عن القياسية Java SE بأنها تحتوي مكتبات برمجية إضافية. ونحن هنا نستخدم النسخة القياسية Java SE ونضمن فيها مكتبة Android SDK .. ولا نحتاج ل Java EE

تحية

BarcaDroid يقول:

Hello there,

I’ve just finished my Android widget. Now I need to have different sizes of this wiget for the user to choose from. for example I need a medium, small and large size widget. so when the user install the app and hold the the home screen then choose widget, in the widget menu I want him to see three widget with the same app name but with the size. something like this:

helloSmall
helloMedium
helloLarge

I have the medium one ready but how can I make the small and the large in the same app? knowing that all three sizes contain the same exact data and actions just the size and the background are different.

Thanks.

Hi Barcadroid..

If I understand your description well, I think one thing you could do is to reset the heights of widgets upon pressing a button. suppose you have list of widgets (buttons) and you wanna make them look bigger when clicking a button called “change to large”.. you may do:
final Button changeButtonToLarge = (Button) this.findViewById(R.id.act2ColorButton);

changeButtonToLarge.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v)
{
leftButton.setHeight(100);
upperButton.setHeight(100);
….

}
note that the initial height was set by you in the first place (e.g. 50)

Alternatively, you may make use of this very interesting link:
http://www.dreamincode.net/forums/topic/144432-android-change-widget-layout-dynamically/

Hope this helps you out..
cheers.

BarcaDroid يقول:

Hi,

Thanks a lot for answering my question this fast while I know that you have a pretty intense load on school.

the link you posted is very helpful as well and I’ll be learning it soon.

My problem is a bit deferent though, What I actually need is to have my app to come with more than one size of widgets.

The widget that I mean is the home screen widget not the app widgets(button, textbox, etc) just to be in the same page LOL.

so what I’m trying to do is to have a live scores widget on the home screen

it will have the logo of the teams playing and the current scores.

it will update automatically from the web every minute.

now, what I need??!

I need to have three sizes of my widget because not all users have space in there home screen

so, I thought that I would do like what “weather bug” are doing in there widget.

when you long press the home screen and select widgets you’ll have three options
for example

barca small
barcs medium
barca large

all these have the same functionality but they have different sizes and backgrounds.

I know that it has to do with having multiple receivers and multiple widget providers

I’m still trying to figure it out but it’s not being nice to me LOL

Please if you need to see an example of what I need download “weather bug” from the market and long press the home screen and select widgets and look for the weather bug widgets and try them .

anyway my app is open source so I can share it with anyone as soon as I get done with my website design.

Regards,

BarcaDroid 

ok gotcha..
well i am not aware of any solution at the moment.. i will try to look up for that, and get back to you upon finding any useful thing..

Thanks for stopping by 🙂

BarcaDroid يقول:

Hi all,

Thanks again and I found the solution to my problem. so for more information about how to solve such a problem please check out this link:

http://stackoverflow.com/questions/2570004/how-to-add-multiple-widgets-in-one-app

It’s a very good website to ask questions and find questions similar to yours.

I hope that this would help someone some how some what…

Thank you BarcaDroid for your last post..
Stackoverflow is indeed an awesome place to get help and support when programming and developing..

Thanks again and good luck with your app 🙂

سعود يقول:

اشكرك عزيزي
ولدي استفسار وهو كيف يتم تحويل العمل الى صيفه apk

وشكرا

أهلا أخ سعود..
العمل يتم تحويله بشكل تلقائي الى .apk عبر الاكليبس قبل رفعه الى المحاكي أو الجهاز الذي تختبر عليه التطبيق. لتحصل على صيغة .apk للتطبيق الذي تعمل عليه، اضغط بالزر اليمين على المشروع في في القائمة الجانبية من الاكليبس، اختر:
Android Tools>Export Unsigned Application Package
لاحظ ان هذه النسخة غير قابلة للرفع في سوق الأندرويد، لأنه يتوجب عليك توقيع أو توثيق التطبيق باستخدام مفتاح تحصل عليه من موقع تطوير الأندرويد التابع لغوغل.

تحية..

محمد أنيس يقول:

السلام عليكم ورحمة الله تعالى و بركاته
لدي مشروع على الاندرويد يتمثل في كيفية كتابة رسالة قصيرة بالصوت ثم أسمع ما كتبت

وهي تطبيق معرفة ومعالجة الصوت

(la reconnaissance et la synthese vocale)

اريد دروس و كتب في ما يخص هذا التطبيق(عربي فرنسي انجليزي خاصة فرنسي إن أمكن

emulateurهل الأندرويد 2.1 لاتحمل هذه التطبيقات في

وعليكم السلام ورحمة الله..
أخي محمد أهلا بك..
بحسب ما فهمت من السؤال، يمكنك بناء تطبيق يقوم بتشغيل الميكروفون واستقبال الصوت المدخل، وتحليله، ومن ثم اظهار النص المقترن به في مربع نصي، مع إمكانية قلب العملية وقراءة النص. أنصحك بالاستعانة بمكتبات جافا متعلقة بال
speech/voice processing
speech/voice recognition
 ستجد أكواد عديدة مفتوحة المصدر تسهل عليك عملية التعامل مع الصوت وتحليله.. ولكن يجب عليك الوضع بعين الاعتبار المقدرات المحدودة نوعا ما للمعالج وكمية الذاكرة المتاحة.. ولا أعرف كتابا محددا حول هذا الموضوع، معذرة.

يفترض ألا تواحه مشكلة في المحاكي ٢.١ طالما أنك تستخدم دوال ومكتبات مدعومة من قبل هذه النسخة.

تحياتي..

محمد أنيس يقول:

بارك اللة فيك أخي وائل
المشكلة أنني لم أجد دروس مفصلة حول هدا الموضوع وخاصة في بداية برمجة أول تطبيق فيما يخص قراءة النص مع كيفية تحميل المكتبات
أفدنا أخي وائل لانني محتاج ولو مثال بسيط جدا للتوضيح
شكرا لك على كل ما قدمت وإنشاء الله كل حرف بحسنة

mohamed anis يقول:

اين انتم يا عرب

عمرو يقول:

طبعا شكرا على مجهودك الرائع
هو فيه درس فيديو فعلا من احسن الدروس الموجوده فى تصميم البرامج للآندرويد
ده الجزء الاول و التانى موجود الربط بتاعو فى نفس الصفحه
http://oreilly.com/catalog/0636920004240
المشكله انا مش عارف احصل عليه من اى حته
لو عرفت تجيبو للموقع بتعنا الموضوع هيبقى حصرى جدا
وكمان فعلا مفيد

FIRAS يقول:

شرح ولا أروع اخ وائل الى الأمام .
عندي سؤال خارج عن الشرح بخصوص تشغيل برامج بإمتداد ال apk … الأمر adb install يكتب في cmd ام لا

واين يجب وضع ملف ال apk .

FIRAS يقول:

لقد وجدت الطريقة وشكرا على كل حال …..

البراء يقول:

الله يعطيك العافية على الشرح المميز

كيف يمكنني أن أجعل البرنامج أو حتى النصوص من اليسار إلى اليمين

و شكرا

عبدالله يقول:

شكرا أخ وائل على السلسلة الجميلة والمفيدة بس أنا عندي سؤال عن كيفية عمل database وإستخدامها في تطبيق الأندرويد وإظهار أحد الحقول في dropdownlist
الرجاء الإفادة في أقرب وقت ممكن وشكرا مقدما

أهلا بك أخ عبدالله..
لدي حلان لك، اما أن أرسل لك على ايميلك كود جاهز لقاعدة بيانات (يتطلب إلماما مسبقا بتقنية قواعد البيانات وجمل SQL) أو أن تنتظرنا قليلا لأني سوف أقوم بنشر شروحات فيديو لتطوير تطبيق جديد يستخدم قواعد البيانات في تخزين المعلومات (سنعلن عن بدء السلسلة قريبا).
تحية

عبدالله يقول:

شكراً أخ وائل ..
أنا ما عندي مشكلة مع أي من الحلين.
بس انا ماعندي فكرة عن sql بس إذا إضطريت ممكن أقرا عنها .
أنا حاليا بحضر في مشروع التخرج وهو عبارة عن برنامج للأندرويد ممكن أشرح لك المشروع في الإيميل وأشوف إذا كان في أي حل آخر غير sql لأني لقيت في الأمثلة الموجودة بالمحاكي مثال إسمه spiner1 وفيه ال dropdownlist ما بتحتاج إلى database .
فلو سمحت رسل لي إيميلك عشان أرسل لك شرح المشروع وانت وريني إذا كان من الضرورة القراءة عن sql ولا لأ….
وشكرا جزيلا
تحياتي…

عبدالله يقول:

ما زلت أنتظر ردك يا أخ وائل…..

أرسلت لك الرد أخي عبدالله..
تحياتي

زائرة يقول:

جزاك الله خير على هذا المجهود الطيب
كثر الله من أمثالك

فهد يقول:

أخي الحبيب وائل العلواني,
شكراُ لك على هذا المجهود الطيب ,

هل لديك فكره عن OpenStreatMap الذي يعتبر بديل لـ GoogleMap
و برمجه الخرائط على الاندرويد ,
و هذا المجال له مستقبل واعد

انا اعمل على مشروع يعتمد على OpenStreatMap
اذا كان لديك فكره عن هذا الرجاء مراسلتى حتى نتبادل الخبرات

أهلا بك أخي فهد..

للأسف لم أعمل مسبقا على OpenStreetMap.. ولكني سأتواصل معك قريبا للتعرف على ما وصلت اليه فيها، إن لم يكن لديك مانع.

تحياتي.

ahmad يقول:

يعطيك الف عافية استاز وائل
معلش اسمحلي سؤال بسيط لانو معلوماتي عقدي في ال xml
هلء في هدول الجملتين
android:text=”@+id/Button01″

android:id=”@+id/Button01″

حكينا انو الاي دي لتحديد اسم العنصر البرمجي .؟صح ؟
وليش بنحط قبل الاسم @+id
وفي بلاقي @+string
شو فايدتهم هدول وضروري اعملهم …؟؟

azza يقول:

السلام عليكم ورحمة الله
المعلومات مفيدة جدا
ارجو منكم ان اعرف كيفية كتابة اكواد الجافا مثلا اذا اردت ان اعمل buttonعند الضغط علية يقوم بالحفظ
ودمتم فى رعاية الله

ساره يقول:

شكرا لك يااستاذ وائل ارجو ان تجيب على سؤالي او اي احد عنده معلومه

من التهديدات الامنيه للاندرويد
مجموعة التهديدات الأمنية الثانية

تستهدف هذه المجموعة استغلال ثغرة في نواة لينكس أو مكتبات النظام وبالتالي السيطرة والتحكم بتوفر الخدمة السرية ، وتكامل المعلومات .
قرائتها اكثر من مره ماذايقصد بذلك ؟

عيد القرم يقول:

أستاذ وائل تحية طيبة وبعد
:
ارجومنك المساعدة في sql لل اندرويد
كيف ابنيه
واين اضعه

حسين يقول:

لو سمحت بدي اسأل اذا بالامكان فكرة لمشروع تخرج يكون عبارة عن تطبيق اندرويد

ساري الجمل يقول:

شكرا جدا أثابك الله علي عملك.
هو ايه اسم البرنامج اللي بنصمم عليه عشان اقدر اجيبه وانزله من ع النت
شكرأ

رولا يقول:

مرحبا اخ وائل شكرا لك على الشروحات لقد استفدت منها كثير على علم باني طالبة سنة رابعة في مجال تكنولوجيا المعلومات واعمل على مشروع تخرج ولكن يوجد لدي مشكلة في فهم طبيعة database التي يتعامل معها androidلقد بحثت في الانترنت وكنت قادرة على فهم بعض الاساسيات ولكن لا اعرف كيف ان اقوم بعمل accessعلى database والوصول اليها
اتمنى مساعدتك بالوقت القريب

شهد العمارنة يقول:

السلام عليكم ورحمة الله وبركاتة
الله يعطيك الف عافية على الشرح الاكتر من ممتاز
بصراحة انا طالبه تخصصي انظمة معلومات حاسوبية احضر لمشروع تخرج ومازلت ابحث عن فكرة لعمل مشروع وبالصدفة مررت بهذة الصفحة واعجبتني تطبيقات الاندرويد التي قمت بشرحها مع العلم باني لم اكن اعلم ماهو الاندرويد من الاصل
ارغب بعمل مشروع تخرج عن الاندرويد ولكن لا اعلم من اين سأبدا وفي اي تطبيق اركز ارجو ان تقترح على تطبيق معين او ان تهديني الى فكرة ممتازة لاتخلص من هذا الضياع انا بانتضار ردك علي باسرع وقت ممكن .
وشكرا

عبدالله العمري يقول:

بسم الله الرحمن الرحيم
انتمني لو في اي تطبيقات او مشاريع مفتوحة المصدر تختص يتشفير الملفات

السلام عليلكم ورحمه الله …. مشكوورين ع هذا الابداع في التميز في اللشرح والليونه في الشرح .
انا ارجوو بمساعدتي في الموضوع التالي :-
بدي لمااكتب اي شي داخل ال EditText يظهر مباشره داخل ال Lisمع توضيح كيفيه التعامل مع الادابتر …
,,,مع فائق الشكر والاخترام,,,

يسرا يقول:

السلام عليكم ارجو المساعده تواجهني مشكله في التعامل مع database

ragheb يقول:

الله يعطيك الف عافية يا رب وشكرا كتير للمعلومات
بس بعد ازنك في مجال اعرف كيف فيني اعمل تطبيق لشغل صوت على الاندرويد بصيغ هي asx….pls….ram اذا في مجال طبـعاً

dola programmer يقول:

السلام ععليكم انا في سنه تانيه حاسبات اسيوط واريد تعلم كتابه الاندرويد وايضا معرفه كيفيه تسويق البرامج مع العلم اني دارس لغه Java ووصلت فيها لغايه ال GUI وشكرا خااااااااالص لكل تعبكم

polat يقول:

أريد أن أعرف أخي الكريم مقاسات التطبيقات وأيضا سؤال آخر هل تطبيق واحد يشتغل على كل الأجهزة

polat يقول:

أنا أصمم شاشات التطبيقات على الفوتوشوب هل كل جهاز أصمم له تطبيق خاص به

احمدد يقول:

السلام عليكم اخي اريد تصميم مثل هذا تطبيق ولكن ممكن تساعدني تعلمني كيف اصمم قوائم مثل ما في تطبيق
https://play.google.com/store/apps/details?id=com.alghazal.chi3rlhob

salma يقول:

السلام عليكم

Leave a Reply

Your email address will not be published. Required fields are marked *