لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 05/30/20 في كل الموقع
-
هل تساءلت يومًا ما الذي يجعل تصميمًا ما رائعًا؟ سوف تتعرَّف من خلال هذا المقال على العناصر الستَّة للتصميم، وكذلك على العنصر السابع المقترح لعصر التصميم الرقميّ. سوف نحلِّل الأساسيَّات ونشرح لك كيفيَّة استخدامها بكفاءةٍ في عملك. ما هي عناصر التصميم؟ إن عناصر التصميم لها تأثير على كيفيَّة تصوُّر العمل، وتنفيذه، واستخدامه، وهي موجودة في أي تصميم بغض النظر عن المهارة، أو الذوق، أو النمط. في كتابه "الفن كتجربة" (Art As Experience)، خلص الفيلسوف وعالم النفس الأمريكي جون ديوي إلى أن كل ما يصمِّمه الفنّانون والمصمّمون له تأثير ضخم على تجارب الناس اليوميّة. من أجل تحليل عناصر التصميم، علينا أن نتَّبع نصيحته السديدة: بعبارة أخرى: ابدأ بالأساسيَّات. البِنية (Form) لكل شيء بِنية، بصورة أو بأخرى. حين نتحدث عن البنية، نحن لا ركز على محتواها، لكن على البِنية ذاتها. البِنَى ثلاثيَّة الأبعاد، ومنها نوعان: هندسيّة (من صنع الإنسان)، وطبيعيّة (عضوية). البِنَى الرقميّة أو الماديّة يمكن قياسها بالطول والعرض والعمق. يمكن تكوين البنية عن طريق تجميع أشكال، ويمكن تعزيزها باللون أو الملمس. قد تكون إما للزينة أو للمنفعة، طبقًا لاستخدامها. بالنسبة للتصميم الرقمي، تعد البِنية هي العنصر الذي تصمِّم من أجله. لذا، إذا كنت تصمِّم جهاز هاتف محمول، فالهاتف هو البِنية. الشكل (Shape) تتكون كل الأشياء من أشكال، وكل عناصر التصميم ما هي إلا أشكال. قد تكون الأشكال داخل بِنية. على سبيل المثال، الزر على موقع الإنترنت هو شكل يعيش في داخل الحاسوب (وهو البنية). الشكل هو جسم ثنائيّ الأبعاد أو ثلاثيّ الأبعاد، وهو يتميَّز عن الحيِّز الملاصق له لأنه محدَّد بحدود فاصلة. قد يشغل الشكل مناطق مختلفة من الفراغ، وقد تكون له عناصر أخرى، كالخط، أو اللون، أو الملمس أو الحركة. ومثله مثل البنية، قد يكون الشكل هندسيًا أو عضويًا. الأشكال الهندسيّة هي التي ترسم باستخدام مسطرة أو فرجار أو أداة رقمية، وتكون دقيقة للغاية، مثل الرسوم المعمارية. يمكن صنعها عن طريق برامج الحاسوب أو باليد، وهي منظمة ومحكومة. أما الأشكال العضوية، فهي التي توجد في الطبيعة أو ترسم باليد، بلا أدوات، وهي عكس الأشكال الهندسية. وكثيرًا ما تبدو طبيعية أو ناعمة. هذا لا يعني أنها تكون أقل تعقيدًا. تأمل الأشكال التي تراها على سطح قطعة الخشب، إنها معقدة، لكنها ليست دقيقة هندسيًا. مع ظهور التصميم باستخدام الحاسوب، أصبح مفهوم "الرسم اليدويّ" مشوّشًا. لكن طالما أنها ترسم باليد الحرّة، دون أدوات هندسيّة، يمكن رسم الأشكال العضويّة بالماوس، أو القلم الرقميّ أو الجهاز اللوحيّ. الخطّ (Line) الخطّ هو من أهم العناصر الأساسيّة للتصميم، وهو غالبًا ما يكون نقطة البداية لجميع أنواع التعبير الفنيّ. ودائمًا ما يمتاز بالطول، أكثر من السمك، وقد يكون متقطعًا، أو متصلًا، أو ضمنيّا. قد يكون الخطّ رأسيًا، قطريًا، أفقيًا، أو منحنيًا. وتتخذ الخطوط أشكالًا وسماكات ومواضع واتجاهات وكثافات متعدِّدة. تتكون الخطوط من نقاط، وتتكون الأشكال من خطوط. قد يحتوي الخطّ على عناصر أخرى، مثل اللون، والملمس، والحركة. رغم بساطته، يستطيع الخطّ أن يتحكّم في أفكار المشاهد ومشاعره، ويقود عينه عبر المساحة. في التصميم الرقمي، عادة ما يستخدم الخطّ في احتواء أو تقسيم المساحات بصريًا. على سبيل المثال، قد يكون لشريط التنقّل لفصلها عن المحتوى. الملمس (Texture) الملمس هو نوعية السطح المدركة لعمل فني. لديه القدرة على جذب عين المشاهد إلى الشكل أو تحويلها عنه، ويمكن تطبيقه على الخطوط والأشكال والبنى. الملمس نوعان: حسي وبصري. الملمس الحسيّ ثلاثي الأبعاد ويمكن لمسه. المثال الأوضح هو لحاء الشجر، فحين تلمسه تستطيع أن تشعر بكل المرتفعات والمنخفضات على سطحه، والمناطق الناعمة والخشنة. أما صورة نفس اللحاء فهي تعد ملمسًا بصريًا، يمكن رؤيته ولا يمكن لمسه. في مجال التصميم الرقميّ، لا توجد حتى الآن شاشات لمس تحاكي الملمس الحسيّ. لذلك، علينا الاكتفاء بالملمس البصري. اللون (Colour) اللون هو من أكثر العناصر التي يصعب التحكم بها، ومن أكثرها صعوبة على الفهم. لكن الأساسيّات سهلة نسبيًا. يساعد اللون على تنظيم التصميم والتأكيد على مناطق معينة أو أفعال معينة. مثل العناصر الأخرى، للون بعض الخواص المختلفة: الدرجة، الإشباع، والسطوع. بخلاف العناصر الأخرى، ليس من الضروري استخدام اللون دائمًا. فقد يكون التصميم خاليًا من الألوان (صحيح أن الأبيض والأسود لونان، لكنك بالتأكيد تفهم المغزى). يمكن استخدام الألوان بقدر ضئيل، أو بكثافة وتنوع كبير، ولكن أفضل نتيجة تكون في وجود لون مهيمن ولون مساعد. ترتبط الدرجة بطول موجي معين للضوء في الطيف المرئي، وهو خليط من الألوان الأساسيّة، الأحمر والأخضر والأزرق. كل درجة لها إشباع زاهٍ أو باهتٍ. السماوي، والأزرق الفاتح، والكحلي، والأزرق الملكي، كلها درجات من الأزرق، لكل منها شدة مختلفة. يمكن للون أيضًا أن يكون على الجانب الفاتح أو الداكن من الطيف. رغم أن الألوان عالمية، إلا أن لها دلالات مختلفة في الثقافات المختلفة. على سبيل المثال، يرمز اللون الأبيض للنقاء في بعض الثقافات، بينما يرمز للموت في ثقافات أخرى. الفراغ (Space) يحتل شكل أو بنية مكان في الفراغ. بِعدِّه عنصرًا من عناصر التصميم، يعرَّف بأنه المساحة أعلى وأسفل وحول الجسم. قد يكون الجسم في الفراغ ثنائيّ الأبعاد أو ثلاثيّ الأبعاد. في التصميم ثنائيّ الأبعاد، يمكن تكوين الفراغ عن طريق خلق خداع بصريّ للبعد الثالث على مساحة مسطحة. يساعد الظل والتظليل وتباين الأحجام على تحديد مكان الجسم في الفراغ. على سبيل المثال، يمكن رسم ظل للزر حتى يبدو أقرب للمستخدم. الفراغ، مثله مثل اللون، هو عنصر لا يستخدم بالضرورة في كل تصميم. لكنه حين يستخدم يكون أداة قوية لإبراز الشكل. الحركة (Movement) العنصر السابع المقترح في عصر التصميم الرقميّ هو الحركة. في أساليب التصميم الكلاسيكيّة أو الثابتة، يمكن أن تكون الحركة ضمنيّة، لكن الأجسام لا يمكنها التحرك. يمكن تطبيق الحركة على الخطوط والأشكال والبنى وملامس الأسطح، حتى أن الأجسام يمكن تحريكها في الفراغ. هذا مفيد بشكل خاص لأنه يسمح للبنى أو الأشكال الخاصة بك بأن تكون لها شخصية أو تحكي قصة. على سبيل المثال، في صورة ثابتة يستطيع رسم الكاريكاتير الإيحاء بالحركة باستخدام خطوط حركيّة أو مناطق مشوشة. يمكن أيضًا تطبيق الحركة على الخبرات الماديّة، حيث يتفاعل المستخدمون مع الفراغ. لقد اكتسبت الحركة شعبيةً في التطبيقات والواجهات لأنها تمكن المصمِّمين من خلق خط زمنيّّ أو تسلسل للأحداث لإخفاء الانتقالات أو شاشات التحميل. إذا قام المستخدم بالنقر على زر ما، قد يتحرك الزر وتنزلق الصفحة التالية لتحل محل الحالية. يسمح هذا للمصمم بأن يحافظ على انشغال المستخدم عن طريق الرسوم المتحركة أو إعطائهم إشارة حين يتفاعلون مع جزء ما من الواجهة. لماذا يجب عليك أن تفهم عناصر التصميم الأساسيّة؟ يجب أن يدرك المصمم الماهر جيدًا العناصر التي عليه استخدامها ومتى يستخدمها. يعطيه هذا أيضًا القدرة على تقييم وتحليل التصاميم الأخرى، والنظر إلى التصميم من ناحية عناصره الأولية، مما يساعدك على إدراك سبب اتخاذ المصمم قرارًا معينًا في عمله. مترجم بتصرف عن المقال Elements of design1 نقطة
-
1 نقطة
-
اريد ان اتعلم برمجه الواجهات فماهو الخيار الافضل التعلم من اليوتيوب مثل قناه الزيرو أو الالتحاق بدوره أكاديمية حسوب وماهو المميز في الدوره ليجعلها مدفوعه ارجو الرد من مجرب1 نقطة
-
عليك أنت أن تحدد المجال و أن تحب المجال الذي اخترته كل المجالات مطلوبة و بكثرة لكن في الدول العربية المجالات التي عليها أكثر طلب هي تطوير مواقع و تطبيقات الويب بالإضافة إلى تطوير تطبيقات الموبايل لا تختر أكثر من مجال و تشتت نفسك إختر مجال واحد و اكتسب خبرة فيه حتى تحترفه و بعدها بإمكانك تعلم المزيد1 نقطة
-
مشكور اخى على الاضافه لكن مازلت فى حيره هل يوجد برنامج معين للبدء فيه وفى نفس الوقت يسهل باقى البرامج على سبيل المثال هل ابدء بتطوير برامج الجوال او اللعاب او الويب هل فى برنامج من المذكور له نسبه كبير مسيطره على بقيه البرامج1 نقطة
-
مرحبا أولا عليك أنت تعرف المجالات الموجودة و تحدد المجال الذي تريد أن تتعلمه و بعدها تبدأ رحلة التعلم أنصحك في بداية الأمر أن تطّلع على هذا المقال سيُعرفك على البرمجة و بعض المفاهيم رابط المقال: تعلم البرمجة1 نقطة
-
السلام عليكم أجمعين ، عندى بضع أسألة فى مجال برمجة المواقع : أتمنى من من لدية معلومة عن ماهو معنى Bootstrap Framework فى البرمجة ؟ وكيف سأستفيد منه بعد برمجة التصميم بواسطة HTML,CSS,JAVA SCRIPT ؟ وماهى الـ Framework بشكل عام وكيف تسهل على التعامل فى عملى ؟ شكراً مقدماً ، أصدقائى1 نقطة
-
1 نقطة
-
لا , يوجد فرق الووردبريس نظام لإدارة المحتوى , بينما الفريموورك يسهل عليك و يوفر عليك الكثير من الوقت فيما يتعلق ببناء المشاريع بتلك اللغة و لكن لا يزال بإمكانك إستخدامه إستخدام شامل و تطوير البرامج بإستخدامه كما أنه يفرض عليك إتباع نمط معين في كتابة الشيفرات. لإستخدام الفريموورك بشكل إحترافي يجب عليك تعلم اللغة المستهدفة من قبل الفريموورك مثلا لو ترغب في إستخدام الbootstrap يجب عليك تعلم لغة css أو لإستخدام فريموورك laravel يجب عليك تعلم الphp لأنه فريموورك خاص بلغة الphp.1 نقطة
-
و عليكم السلام.. كل لغة برمجة تمتلك فريموورك أو مجموعة من الفريموورك الخاصة بها , بإختصار و بدون الدخول في أمور تقنية معقدة الفريموورك يجعلك تتبع أسلوب برمجة معين بإستخدام تلك اللغة و يسهل عليك كتابة برنامجك في وقت أسرع و بحماية أعلى حيث أنه يوفر العديد من الوظائف الجاهزة التي قد يستغرق كتابتها بعض الوق على سبيل النظام نظام تسجيل الأعضاء في المواقع يحتاج مطوري المواقع إليه في أغلب مواقعهم بدل من كتابته في كل مشروع أغلب الفريموركس توفره جاهزا لك. الBootstrap هو فريموورك للغة الcss يوفر عليك الكثير من العناء فيما يتعلق بلغة السي إس إس حيث يحتوى على الكثير من الأشياء الجاهزة و أهمها هو نظام الgrid الخاص به كما يحتوي على إضافات مفعله بلغة الجافاسكربت أيضا لإختصار الوقت على المصممين و على من ليس له دراية بلغة الجافاسكربت. كيف سيساعدك؟ سيختصر عليك الكثير من الوقت.1 نقطة
-
السلام عليكم ورحمة الله وبركاته تحيه طيبه للجميع لدي استفسار لو تكرمتو اعمل على كود ارسال الاشعارات من التطبيق الى المستخدم الكود شغال ميه ميه ولكن توجد مشكله بسيطه في الامر الكود يشتغل بعد من يقوم المستخدم بالخروج من التطبيق من خلال .. public void onBackPressed() { Intent sr =new Intent(this, MyService.class); startService(sr); Toast.makeText(this, "Exit", Toast.LENGTH_SHORT).show(); finish(); run_loop(); super.onBackPressed(); } المشكله انه كل ما خرج من التطبيق يشاهد اخر اشعار وصله من جديد او السيرفر يرجع يرسل له اشعار هو سبق وتم ارساله للمستخدم يعني السيرفر يعمل تكرار .. المفترض المستخدم من يوصله الاشعار لمره واحده لا يوصله من جديد لنفس الاشعار كيف يمكن حل هذا المشكله لو تكرمتو بحيث انه الاشعار الجديد يصل للمستخدم لمره واحده فقط وليس كل ما دخل التطبيق وخرج يحصل على اشعار باخر رسالة وصلته او اخر موضوع .. كود السيرفر .. public class MyService extends Service { public MyService() { } @Override public void onCreate(){ super.onCreate(); } @Override public int onStartCommand(Intent intent,int flags,int startId){ Toast.makeText(this, "Start myServis", Toast.LENGTH_LONG).show(); // run_loop(); return START_STICKY; } @Override public void onDestroy(){ Toast.makeText(this, "Stopmyservci", Toast.LENGTH_LONG).show(); super.onDestroy(); } @Override public IBinder onBind(Intent intent) { // TODO: Return the communication channel to the service. throw new UnsupportedOperationException("Not yet implemented"); } } كود استدعاء الاشعار .. public void run_loop(){ String url = "http://00000000/testnet/android_register_login/ShowAllData.php"; JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { try { JSONArray jsonArray = response.getJSONArray("data"); JSONObject hit = jsonArray.getJSONObject(0); String id = hit.getString("id"); int lastThread = Integer.parseInt(String.valueOf(id)); JSONObject jsonObject = null; Toast.makeText(MainActivtiy.this, lastThread + "", Toast.LENGTH_SHORT).show(); if (app.getTotal_threads() < lastThread) { app.setTotal_threads(lastThread); Notification notification = new NotificationCompat.Builder(MainActivtiy.this) .setSmallIcon(android.R.drawable.ic_popup_reminder) .setContentTitle("title") .setContentText("message") .setAutoCancel(true) .setPriority(NotificationCompat.PRIORITY_HIGH) .setCategory(NotificationCompat.CATEGORY_MESSAGE) .build(); notificationManager.notify(1, notification); } } catch(JSONException e){ e.printStackTrace(); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { error.printStackTrace(); } }); RequestQueue requestQueue = Volley.newRequestQueue(this); requestQueue.add(request); Handler handler=new Handler(); handler.postDelayed(new Runnable(){ @Override public void run() { run_loop(); } },10000); }1 نقطة
-
@Mohamd Imran والله ي خوي ان راسي دار اعذرني ازعجتك بس الموضوع يلف براس شوية من الواضح ان الكود الذي قمت بتعديله صار شغال ربي يعطيك الف عافيه اذا شفت فيه اي شي ما شغال عدل رح ابلغك باذن الله كل الشكر لك عزيزي ربي يزيدك من واسع فضله1 نقطة
-
1 نقطة
-
اهلا اخي @Mohamd Imran الان اصبح شكل الكلاس سيرفس لدي كالتالي public class MyService extends Service { public NotificationManagerCompat notificationManager; String id; App app; public MyService() { } @Override public void onCreate(){ app = (App) getApplicationContext(); id= String.valueOf(app.getTotal_threads()); Log.i(TAG,"test"+ id.toString()); super.onCreate(); } @Override public int onStartCommand(Intent intent,int flags,int startId){ Toast.makeText(this, "Start myServis", Toast.LENGTH_LONG).show(); run_loop(); return START_STICKY; } public void run_loop(){ String url = "http://00000000/testnet/android_register_login/ShowAllData.php"; JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { try { JSONArray jsonArray = response.getJSONArray("data"); JSONObject hit = jsonArray.getJSONObject(0); String id = hit.getString("id"); int lastThread = Integer.parseInt(String.valueOf(id)); JSONObject jsonObject = null; Toast.makeText(MyService.this, lastThread + "", Toast.LENGTH_SHORT).show(); if (app.getTotal_threads() < lastThread) { app.setTotal_threads(lastThread); Notification notification = new NotificationCompat.Builder(MyService.this, CHANNEL_1_ID) .setSmallIcon(android.R.drawable.ic_popup_reminder) .setContentTitle("title") .setContentText("message") .setAutoCancel(true) .setPriority(NotificationCompat.PRIORITY_HIGH) .setCategory(NotificationCompat.CATEGORY_MESSAGE) .build(); notificationManager.notify(1, notification); } } catch(JSONException e){ e.printStackTrace(); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { error.printStackTrace(); } }); RequestQueue requestQueue = Volley.newRequestQueue(this); requestQueue.add(request); Handler handler=new Handler(); handler.postDelayed(new Runnable(){ @Override public void run() { run_loop(); } },10000); } @Override public void onDestroy(){ Toast.makeText(this, "Stopmyservci", Toast.LENGTH_LONG).show(); super.onDestroy(); } @Override public IBinder onBind(Intent intent) { // TODO: Return the communication channel to the service. throw new UnsupportedOperationException("Not yet implemented"); } } وصفحة home كالتالي public class Home extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.home); } private boolean isMyServiceRunning(Class<?> serviceClass) { ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { if (serviceClass.getName().equals(service.service.getClassName())) { return true; } } return false; } public void onBackPressed() { if(!isMyServiceRunning(MyService.class)){ Intent sr =new Intent(this, MyService.class); startService(sr); } Toast.makeText(this, "Exit", Toast.LENGTH_SHORT).show(); finish(); super.onBackPressed(); } }1 نقطة
-
وعليكم السلام أخي @مروان مروان3 يبدو أن سبب المشكلة هو عند ضغط زر الرجوع يتم تشغيل السيرفيس مرة أخرى لحل المشكلة نقوم أولا بالتأكد من أن السيرفيس الخاصة بنا تعمل مسبقاً أم لا في الخلفية وبناء على ذلك نقوم بتشغيلها عند الضغط على زر الرجوع قمت بعمل ميثود تقوم بإرجاع true أو false لحالة السيرفيس ضعها تحت ال onCreate ميثود private boolean isMyServiceRunning(Class<?> serviceClass) { ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { if (serviceClass.getName().equals(service.service.getClassName())) { return true; } } return false; } ونقوم بإستخدامها هكذا في الكود الخاص بك public void onBackPressed() { if(!isMyServiceRunning(MyService.class)){ Intent sr =new Intent(this, MyService.class); startService(sr); } Toast.makeText(this, "Exit", Toast.LENGTH_SHORT).show(); finish(); run_loop(); super.onBackPressed(); } وأيضا هنا لديك خطأ تستدعي ال فنكشن run_loop مرتين حيث يتم تشغيل التايمر أو اللوب عند تشغيل السيرفيس أي لا يوجد داعي لإضافتها مرة أخرى في ال onBackPressed وعدل هذا الجزء من السيرفيس لكي يشغل الفنكشن الخاص بك @Override public int onStartCommand(Intent intent,int flags,int startId){ Toast.makeText(this, "Start myServis", Toast.LENGTH_LONG).show(); run_loop(); return START_STICKY; } وقم بإزالتها من onBackPressed أي هكذا public void onBackPressed() { if(!isMyServiceRunning(MyService.class)){ Intent sr =new Intent(this, MyService.class); startService(sr); } Toast.makeText(this, "Exit", Toast.LENGTH_SHORT).show(); finish(); super.onBackPressed(); } وأيضا لماذا تستخدم finish(); هنا ؟1 نقطة
-
هي فعلياً تعمل دائما في الخلفية (تختلف في بعض إصدارات الأندرويد),أي لا تحتاج إلى تشغيلها كل مدة , لكن أفضل إداء أو أسلوب لعمل هكذا نوع من التطبيقات ,أن تقوم بعمل قاعدة بيانات محلية sqllite db وتخزين البيانات القادمة من ال API في تلك القاعدة حتى عند عدم توفر إتصال بالإنترنت ينطلق الإشعار بناء على البيانات المحملة مسبقاً من ال API ومن هنا تستطيع عمل كويري لقاعدة البيانات المحلية (أو من خلال عمل API لتلقي الطلبات وإعادة إرسال التعليقات بناء على Id مستخدم معين) لطلب التعليقات الجديدة لمستخدم معين1 نقطة
-
اه أعتذر لم أقم بتعريف ال notification manger في الكود فقط أضف التالي فوق جملة الشرط أي هكذا NotificationManager notifManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); if (notifManager == null) { notifManager = (NotificationManager)getSystemService(this.NOTIFICATION_SERVICE); } وبخصوص هذا من الأندرويد ستديو هذا تحذير للإصدارات القديمة لكن لا عليك منه1 نقطة
-
صحيح ,وهو هكذا سيأتي لك بجميع السجلات التي يتم إرجاعها من ال API على عددها لاحظ هنا في ال for loop إستخدمنا طول المصفوفة jsonArray.length() أي مثلاً تم إرجاع ٣ سجلات فإنه سيظهر ٣ سجلات بناء على عدد العناصر في المصفوفة for (int i = 0; i < jsonArray.length(); i++) { JSONObject hit = jsonArray.getJSONObject(i); String idtopic =hit .getString("idtopic"); int lastThread=Integer.parseInt(String.valueOf(idtopic)); JSONObject jsonObject = null; Toast.makeText(MyService.this, lastThread+":", Toast.LENGTH_SHORT).show(); } لكن إن أردت فقط عرض سجل واحد يمكنك عمل التالي للوب بدل jsonArray.length() ضع الرقم - 1 for (int i = 0; i < 2; i++) { JSONObject hit = jsonArray.getJSONObject(i); String idtopic =hit .getString("idtopic"); int lastThread=Integer.parseInt(String.valueOf(idtopic)); JSONObject jsonObject = null; Toast.makeText(MyService.this, lastThread+":", Toast.LENGTH_SHORT).show(); } وهكذا سيرجع لك سجل واحد1 نقطة
-
هنا كما يظهر يوجد لديك أخطاء 32.416 2432-2432/com.example.myapplication W/System.err: org.json.JSONException: No value for idtopic 05-29 13:10:32.416 2432-2432/com.example.myapplication W/System.err: at org.json.JSONObject.get(JSONObject.java:354) 05-29 13:10:32.416 2432-2432/com.example.myapplication W/System.err: at org.json.JSONObject.getString(JSONObject.java:510) 05-29 13:10:32.416 2432-2432/com.example.myapplication W/System.err: at com.example.myapplication.MyService$1.onResponse(MyService.java:48) 05-29 13:10:32.416 2432-2432/com.example.myapplication W/System.err: at com.example.myapplication.MyService$1.onResponse(MyService.java:41) 05-29 13:10:32.416 2432-2432/com.example.myapplication W/System.err: at com.android.volley.toolbox.JsonRequest.deliverResponse(JsonRequest.java:83) 05-29 13:10:32.416 2432-2432/com.example.myapplication W/System.err: at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:106) 05-29 13:10:32.416 2432-2432/com.example.myapplication W/System.err: at android.os.Handler.handleCallback(Handler.java:615) 05-29 13:10:32.416 2432-2432/com.example.myapplication W/System.err: at android.os.Handler.dispatchMessage(Handler.java:92) 05-29 13:10:32.416 2432-2432/com.example.myapplication W/System.err: at android.os.Looper.loop(Looper.java:137) 05-29 13:10:32.416 2432-2432/com.example.myapplication W/System.err: at android.app.ActivityThread.main(ActivityThread.java:4745) 05-29 13:10:32.416 2432-2432/com.example.myapplication W/System.err: at java.lang.reflect.Method.invokeNative(Native Method) 05-29 13:10:32.416 2432-2432/com.example.myapplication W/System.err: at java.lang.reflect.Method.invoke(Method.java:511) 05-29 13:10:32.416 2432-2432/com.example.myapplication W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 05-29 13:10:32.416 2432-2432/com.example.myapplication W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 05-29 13:10:32.416 2432-2432/com.example.myapplication W/System.err: at dalvik.system.NativeStart.main(Native Method) الخطأ الأساسي هنا No value for idtopic أي لا يوجد قيمة ل idtopic هل ال API الخاص بك يحوي تلك القيمة ,وأيضا هنا لديك خطأ for (int i = 0; i < jsonArray.length(); i++) { JSONObject hit = jsonArray.getJSONObject(0); أنت تقوم بتمرير 0 للميثود getJSONObject وهذا خطأ يجب أن تمرر متغير ال i أي هكذا for (int i = 0; i < jsonArray.length(); i++) { JSONObject hit = jsonArray.getJSONObject(i); حتي يتم الوصول إلى البيانات المرجعة من اللوب ,إن لم يعمل بعد ذلك أعلمني سأقوم ببناء التطبيق وال API لدي وأحللك المشكلة1 نقطة
-
أهلا بك @مروان مروان3 أتوقع أنك لم تقم بتعريف ال Background service في ملف ال mainfest , تأكد من ذلك ,وأيضاً إن كنت تقوم بتجربة التطبيق على جهاز ذو نظام أندرويد ٨,٩ سيظهر لك في شريط الإشعارات عند غلق التطبيق سيظهر لك أن هناك عملية تجري في الخلفية تأكد من ذلك ,وأيضاً إذهب إلى التطبيق من خلال إعدادات هاتفك وتأكد من إنك أعطيت الصلاحيات للسماح للتطبيق بالعمل في الخلفية ,وأيضا تفقد إن كان هناك أخطاء تظهر في شريط ال Logcat في الأندرويد ستديو وأنت موصل الهاتف بالجهاز1 نقطة
-
السلام عليكم أخي ,حسب ما فهمت إنك تريد إرسال إشعار من التطبيق عند قيام المستخدم بوضع تعليق جديد على بوست معين ,يمكنك ذلك من خلال إرجاع عدد التعليقات الحالي والتحقق إن كان هناك زيادة في العدد إن حدث زيادة نقوم بتفحص التعليقات من أخر عدد للتعليقات ثم عمل إشعار بتلك التعليقات من الAPI او السيرفر الخاص بك,ولعمل إشعار يمكنك إستخدام الكود التالي مع تعديله بما يتناسب مع تطبيقك (جافا) NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID) .setSmallIcon(R.drawable.notification_icon) .setContentTitle("قام مستخدم بالتعليق على منشورك") .setContentText("قام مستخدم بإضافة تعليق جديد!") .setPriority(NotificationCompat.PRIORITY_DEFAULT); وأيضا لإرسال إشعار حتى عند إغلاق التطبيق ,يتم إستخدم Background service وهي تعمل بالخلفية حتى عند إغلاق التطبيق تستمر بالعمل وتقوم هنا بالتفحص للإشعارات الجديدة1 نقطة
-
مرحبا لغة جافا متشعبة كثيرا يمكنك إستعمالها لبناء console application و يمكنك أيضا إستخدامها في برمجة GUI أي Graphical User Interface باستخدام مكتبة swing أو عن طريق JavaFX يمكنك أيضا ربط التطبيق بإستخدام قاعدة بيانات بحيث تستطيع حفظ و تعديل و قراءة و حذف البيانات مثلا يمكنك بناء برنامج للمخازن و العملاء و الموردين و المنتجات و ما إلى ذلك يمكنك أيضا إستعمال لغة جافا لبناء مواقع و تطبيقات ويب عن طريق أطر العمل الخاصة بها و أشهرها Spring boot جافا أيضا يتم إستعمالها لبرمجة تطبيقات الأندرويد عبر منصة أندرويد ستوديو تدخل جافا أيضا في الشبكات و البرمجيات المدمجة كما تلاحظ فهي متعددة الإستخدام و المجالات فقط حدد المجال الذي تريد تعلمه و ابحث عنه في اليوتيوب (إن كنت تريد شيء مجاني) أو بإمكانك الحصول على دورة مدفوعة من Udemy نصيحتي لك لا تنتظر من شخص أن يعلمك كل شيء ضع فكرة أو برنامج في رأسك و حاول أن تقوم بتنفيذها و أبدأ أولا بفكرة بسيطة ثم قم بتوسيعها على سبيل المثال أنت الآن تعلمت أساسيات لغة جافا لنقل أنك فكرت في الفكرة التالية : بناء برنامج بسيط عند تشغيله يعرضلك نافذة عبارة عن نافذة لتسجيل الدخول أنت الآن تملك فقط أساسيات لغة جافا قم بعمل Java console application تقوم بالتالي : تطلب من المستخدم : اسم المستخدم عندما يقوم المستخدم بإدخاله تقوم بحفظه في متغير ثم تطلب منه كلمة السر و تقوم بحفظها في متغير جديد بعدها تقوم بالبحث عن المدخلات في جدول users يحتوي على بيانات مستخدمين قمت بتعريفها مسبقا إن وجدت المدخلات ضمن الجدول تعرضله رسالة أنه تم تسجيل الدخول إذا وجدت العكس تعرضله رسالة أخرى و لتكن أن البيانات التي أدخلتها غير موجودة ... لاحظ أن هذا البرنامج بسيط و لن تحتاج فيه غير أساسيات لغة الجافا و سيتم تنفيذه عبر الكونسول لكنه سيرسخ لك المعلومات و الأساسيات التي تعلمتها 2. بعدها تعلم مكتبة swing أو JavaFX ستمكنك من بناء نوافذ و إضافة أزرار الى النافذة و عدد من الأدوات الخاصة بالتفاعل مع ال user بعد تعلمها قم بتوسيع الفكرة أعلاه و قم ببناء واجهة لتسجيل الدخول 3. أنت الآن فقط تستعمل جداول لغة جافا قم بتعلم قواعد البيانات و كيفية دمجها مع البرامج و عند تعلمها قم بتوسيع الفكرة أعلاه لربط الواجهة بقاعدة بيانات و هكذا أنت في كل مرة تزيد من معلوماتك و تكتسب خبرة بتطبيقها أنا فقط أعطيتك مثال عن فكرة بسيطة بإمكانك تصور فكرة غيرها مناسبة لك لكن حاول أن تكون الفكرة في بادئ الأمر بسيطة حتى تستطيع تنفيذها و بالتوفيق1 نقطة