طراحی لایه گرافیکی - 4 دایره هم اندازه در یک صفحه - (حل شد)
کد هم اندازه کردن طول و عرض پایین قرار دارد
سلام دوستان من یک صفحه در برنامم دارم که باید 4 دایره داخلش باشه طبق آموزش های استاد پیش رفتم ولی خروجی برنامه در گوشی های با اندازه متفاوت دایره به بیضی تبدیل میشه لطفا راهنمایی کنید ممنون
این عکس رو هم ببینید خروجی صفحه

استفاده از selector برای دایره شدن background
<?xml version="1.0" encoding="utf-8"?>
<selectorxmlns:android="http://schemas.android.com/apk/res/android">
<itemandroid:state_pressed="false"><shapeandroid:shape="oval">
<solidandroid:color="#fa09ad"/></shape>
</item><itemandroid:state_pressed="true"><shapeandroid:shape="oval">
<solidandroid:color="#c20586"/></shape></item></selector>
از نظر هندسه و ریاضیات < رسم یک شکل دایره ایی بصورتی که شعاع اون در همه جا یک اندازه باشه (بیضی شکل نباشه) < شما باید اون رو درون یک مربع ترسیم کنید (با توجه به این که صفحه نمایش ها اکثرا مربعی نیستند ) < پس باید کاری کنید که اندازه عرض و ارتفاع برابر باشه < بنابر این اولین راه کار شما دادن دادن اندازه ثابت به طول و عرض هست <
به نظر من استفاده از تکنیک های طراحی لایه کار مناسبی نیست <
مثلا شما در اینجا برای عرض وزن 0.5 قرار دادید < اما برای ارتفاع برابر با لایه پدری قرار دادید < حالا اگه ارتفاع همون لایه پدری خودش برابر با یک وزن باشه < درواقع دایره شما هم در ارتفاع و هم در عرض بصورت وزن مقدار داده شده < شما میتونید بین دو لایه بالا و پایین یک لایه قرار بدید که وزرن 1 رو داشته باشه و ارتفاع و عرض رو برابر کنید با عدد ثابت کنید
که در نهایت نتیجه بخوبی دیده نمیشه و روی صفحه نمایش هایی مانند تبلت اندازه دایره های شما کوچیک دیده میشه
# پس بهرین کار استفاده از کد نویسی هست < مقدار ارتفاع و عرض رو بگیرید < کمترین مقدار رو برای هر دو ست کنید
public void goview()
{
l1 = (LinearLayout) findViewById(R.id.LinearLayout01);
l2 = (LinearLayout) findViewById(R.id.LinearLayout02);
p1 = (LayoutParams) l1.getLayoutParams();
p2 = (LayoutParams) l2.getLayoutParams();
l1.post(new Runnable() {
@Override
public void run() {
int h = l1.getHeight();
int w = l1.getWidth();
Log.i("log", "h=" + h);
Log.i("log", "w=" + w);
p1.weight = 0f;
p2.weight = 0f;
if (h > w)
{
p1.height = w;
p1.width = w;
p2.height = w;
p2.width = w;
}
else
{
p1.height = h;
p1.width = h;
p2.height = h;
p2.width = h;
}
}
});
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .