تغيير الـ Layout عند تغير اتجاه حمل الجهاز في أندرويد


(عمار الخوالدة) #1

السلام عليكم ورحمة الله وبركاته …

سنشرح اليوم طريقة تصميم Activity يتغير الـ Layout الخاص بها عند تغيير إتجاه حمل الجهاز في برمجة الأندرويد هذا الدرس سهل وبسيط ان شاء الله ولا يتطلب الا معرفة بالاساسيات .


قم بإنشاء مشروع جديد بالطريقة المعتادة وبعد ان تفعل ذلك قم بانشاء Layout ثانية غير الـ Layout المرتبطة بالـ Activity .

الآن بعد انشاء الـ Layout الثانية اللتي سنستخدمها عندما يكون الجهاز في وضع Landscape قم بالضغط على هذا الزر كما في الصورة (اضغط على صورة الهاتف وليس على السهم اللذي بجانبه) :

قم بوضع نص في كل Layout لتميز بينهما يجب في النهاية ان يكون التصميم كالتالي :

الآن في المحصلة أصبح لدينا 2 Layouts مع Activity واحد والآن سننتقل للـ Activity لنقوم بكتابة أكواد تحديد الـ Layout المناسبة .

في الـ Activity كما تعلم في الحدث onCreate أول دالة تكتب هي دالة setContentVeiw وهي الدالة المسؤولة عن تحديد الـ Layout المرتبطة بهذه الـ Activity .

قم بحذف الدالة لنتمكن من تحديد الـLayout اللتي تناسب حالة الجهاز .

الآن لنحدد الـ Layout المناسبة يجب التحقق من طريقة الامساك بالجهاز بهذا الكود (شرح الكود في الـComments) :

package today.acc.layoutchanger;

import android.content.res.Configuration;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        /*
        * في جملة التحقق نتحقق من وضعية الجهاز
        * فان كانت الوضعية بالشكل العمودي سيطبق
        * الـ Layout
        * الأول، وإن كانت خاطئة سيطبق الثاني
        * */

        if(getResources().getConfiguration().orientation 
                == Configuration.ORIENTATION_PORTRAIT)
            
            setContentView(R.layout.activity_main);
        else
            setContentView(R.layout.layout2_lndscape);
        
        
        // هنا تنتهي جملة التحقق وبعدها تستطيع تنفيذ أي كود اخر

    }
}

صورة معاينة للبرنامج في الحالتين :