Itgirl

پشتیبانی از سایز صفحه نمایش های مختلف

9 ارسال در این موضوع قرار دارد

چطور میتوان برنامه ای نوشت که در تمام صفحه نمایش ها به صورت قابل قبولی نمایش داده شود و چیدمان به هم نریزد

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سلام راه زیاد داره ولی من یکیشو میگم کد های xml رو با LinearLayout طراحی کنید که تو همه گوشی ها یک شکل باشه

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سلام

بارها و بارها در این انجمن به این پرسش پاسخ داده شده

بهتره برای هر دسته سایز صفحه نمایش لایوت جدا طراحی بشه مثلا برای تبلت ها در پوشه xhdpi لایوتی طراحی کنید و در پوشه ldpi لایوتی برای صفحات کوچک طراحی کنید و برای متوسط ها mdpi و برای حدود 7 اینجی ها xhdpi و همچنین عکس ها را به تناسب بزرگ و کوچک کنید و در پوشه مربوطه قرار دهید

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

ببخشید ینی اگه 4تا حالت برای سایز  ودو حالت برای افقی عمودی درنظر بگیریم 8تا  layoutمیخواد درست کنیم یا 6تا؟

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

راه حل حرفه ای، همینی هست که دوستان اشاره کردن .

اما، گاهی لازم میشه شما لایتون رو با جاوا ایجاد کنید . بر فرض مثال توی ساخت کیبورد یا چیزی شبیه به اون که تعداد اجزای تصویر زیاد باشه ؛ راهی که توی این شرایط خودم استفاده میکنم، تعیین نسبی مشخصات شئ هست .

توی این حال، شما ی طراحی برای حالت عمودی (یا افقی) دارین، اگر لازم شد، ی طراحی هم برای حالت دیگه . روش کار هم میتونه ملاک قرار دادن طول و عرض صفحه نمایش باشه و مشخصات اشیاء دیگه رو به شکل ضرایبی از این دوتا مقدار دهی میکنیم .

البته توی این روش هیچ تضمینی نیست که روی همه دستگاها اپلیکیشن شما بی نقص باشه . گاهی نزدیک بودن مقدار طول و عرض تصویر، یا کوچیک بودن صفحه نمایش، مشکلاتی رو پیش میاره، که اجتناب ناپذیره .

بهرحال، لایه بعضی اپلیکیشن هارو نمیشه از قبل آماده کرد و باید دست به دامن جاوا بشیم ...

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

Amd میشه لدفن نمونه کدش رو برام بزاری

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

Amd میشه لدفن نمونه کدش رو برام بزاری

سلام. همونطور که گفتم من خودم تازه وارد محسوب میشم، پس یحتمل به این تکه کدها ایراداتی وارده ؛

محتوای کلاس  FirstActivity، صفحه اول اپلیکیشن که توی این صفحه تعداد ردیف‌ها و ستون‌های ماتریسی که میخوایم توی صفحه بعد تشکیل بدیم رو از کاربر دریافت می‌کنیم

[align=left][shcode=java]

package com.example.layout;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.TextView;

public class FirstActivity extends Activity {

    public static int NumOfColums;

    public static int NumOfRows;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_first);

        final TextView Colums = (TextView) findViewById(R.id.Colums);

        final TextView Rows = (TextView) findViewById(R.id.Rows);

        Button Next = (Button) findViewById(R.id.Button);

        Next.setOnClickListener(new OnClickListener() {

            @Override

            public void onClick(View v) {

                if (Integer.valueOf(Colums.getText().toString()) > 0)

                {

                    NumOfColums = Integer.valueOf(Colums.getText().toString());

                    if (Integer.valueOf(Rows.getText().toString()) > 0)

                    {

                        NumOfRows = Integer.valueOf(Rows.getText().toString());

                        finish();

                        Intent M = new Intent(FirstActivity.this, SecondActivity.class);

                        M.putExtra("NumOfColums", NumOfColums);

                        M.putExtra("NumOfRows", NumOfRows);

                        startActivity(M);

                    }

                }

            }

        });

    }

}

[/shcode]

[align=right]محتوای activity_first.xml، که ظاهر صفحه رو بر اساس روشی که دوستان گفتن طراحی کردم :

[align=left][shcode=xml]

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:paddingBottom="@dimen/activity_vertical_margin"

    android:paddingLeft="@dimen/activity_horizontal_margin"

    android:paddingRight="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin"

    tools:context="com.example.layout.FirstActivity" >

   

        android:layout_width="160dip"

        android:layout_height="wrap_content"

        android:orientation="vertical"

        android:layout_centerInParent="true"

        >

       

       

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:text="Number Of Colums :"

             />

       

       

            android:id="@+id/Colums"

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

           

            />

       

       

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:text="Number Of Rows :"

             />

       

       

            android:id="@+id/Rows"

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

           

            />

       

       

            android:id="@+id/Button"

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:text="Next >"

            />

       

   

   

[/shcode]

[align=right]محتوای کلاس SecondActivity، که ظاهر صفحش بدون نیاز به فایل xml و با کمک جاوا به روشی که توضیح دادم طراحی شده :

[align=left][shcode=java]

package com.example.layout;

import android.app.Activity;

import android.os.Bundle;

import android.view.Display;

import android.view.Gravity;

import android.widget.Button;

import android.widget.RelativeLayout;

import android.widget.RelativeLayout.LayoutParams;

public class SecondActivity extends Activity {

    private int ScreenWidth;

    private int ScreenHeight;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        int Number = 1;

        RelativeLayout Bg = new RelativeLayout(this);

        getScreenSize();

        Button Text;

        int NumOfColums = getIntent().getExtras().getInt("NumOfColums");

        int NumOfRows = getIntent().getExtras().getInt("NumOfRows");

        for (int i = 0; i < NumOfRows; i++)

        {

            for (int j = 0; j < NumOfColums; j++)

            {

                Text = new Button(this);

                               RelativeLayout.LayoutParams TextParams =

                new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

                Text.setHeight(ScreenHeight / NumOfRows);

                Text.setWidth(ScreenWidth / NumOfColums);

                TextParams.leftMargin = (ScreenWidth / NumOfColums) * j;

                TextParams.topMargin = (ScreenHeight / NumOfRows) * i;

                Text.setGravity(Gravity.CENTER);

                Text.setLayoutParams(TextParams);

                Text.setText(String.valueOf(Number));

                Number++;

                Bg.addView(Text);

            }

        }

        setContentView(Bg);

    }

    private void getScreenSize() {

        Display Dis = getWindowManager().getDefaultDisplay();

        ScreenWidth = Dis.getWidth();

        ScreenHeight = Dis.getHeight();

    }

}

[/shcode]

[align=right]به وسیله این کد، با تغییر ابعاد صفحه Device تناسب اجزاء صفحه هم تغییر میکنه و نسبت طول و عرضشون متفاوت خواهد بود ولی در کل قالب مشابهی دارن.[/align]

[/align]

[/align]

[/align]

[/align]

[/align]

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

ببخشیداگه بخوایم به جای تعریف لایه های مختلف از فرگمنت استفاده کنیم چی؟؟

فرگمنت چه تاثیری داره؟

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری