آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

تاخیر در اجرای فایل های xml از نوع selector

Reza  10 سال پیش  9 سال پیش
0 0

سلام

    همونطور که میدونید اگه برای یه View مثل دکمه ، selector تعیین نکنیم ، به صورت پیش فرض خود اندروید یه selector نارنجی براش انتخاب میکنه . در این حالت ، به محض انتخاب دکمه ، رنگش تغییر میکنه ( بلافاصله فایل xml اجرا میشه ) ، اما چرا اگه خودمون براش celector انتخاب کنیم ، اجرای فایل xml ای که به دکمه اختصاص دادیم با تاخیر انجام میشه ؟

0 0
سلام ، اگر تمایل دارید میتونید مقدار Selector را @null بذارید تا سلکتور اندروید هم نشان داده نشود ، اما در کل نباید کندی در نمایش افکت کاستوم شما وجود داشته باشد . میتونید کد های Selector را قرار دهید تا دوستان بررسی کنند ، احتمالا تاخیر زمانی ناشی از کد هایی هست که باعث ایجاد وقفه میشوند . (10 سال پیش)
0 0
البته منظورم از تاخیر ، تاخیر زیر 0.5 ثانیه هست . ولی کاملا مشهوده . و باعث میشه بین state_hovered = true و state_pressed = true رویداد state_pressed = false برای لحظه کوچکی اتفاق بیافته . الان کدها رو میذارم : (10 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
Reza  10 سال پیش
0 0

کدهای button_selector :

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >

<item android:drawable="@drawable/disable_button" android:state_enabled="false"></item>
<item android:drawable="@drawable/hovered" android:state_hovered="true"></item>
<item android:drawable="@drawable/un_pressed" android:state_pressed="false"></item>
<item android:drawable="@drawable/pressed" android:state_pressed="true"></item>

</selector>

فایل disable_button :

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

<corners android:radius="4dp" />

<solid android:color="#F4F4F4" />

<stroke
android:width="1dp"
android:color="#ADB2B5" />

</shape>

فایل hovered :

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

<corners android:radius="4dp" />

<gradient
android:angle="90"
android:endColor="#FFFFFF"
android:startColor="#E5FAFF" />

<stroke
android:width="2dp"
android:color="#8CDEFA" />

</shape>

فایل un_pressed :

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

<corners android:radius="4dp" />

<gradient
android:angle="90"
android:endColor="#FaFaFa"
android:startColor="#d0d0d0" />

<stroke
android:width="2dp"
android:color="#808080" />

</shape>

فایل pressed :

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

<corners android:radius="4dp" />

<gradient
android:angle="90"
android:endColor="#FFFFFF"
android:startColor="#B5E2FA" />

<stroke
android:width="2dp"
android:color="#3C7FB1" />

</shape>
0 0
سلام ایرادی در این فایل ها وجود داره ؟ (10 سال پیش)
0 0
کسی تا حالا از selector استفاده نکرده ؟ من همین کدها رو در یه برنامه جدا که فقط شامل همین کدها بود قرار دادم و مشکلی نبود و تاخیری نداشت ، اما در برنامه اصلی تاخیر داره . یعنی به خاطر شلوغی فولدر drawable برنامه اصلی هست ؟ (10 سال پیش)
0 0
کد ها که به نظر مشکلی ندارند ، Hover فکر میکنم برای زمانی کاربرد داره که موس و یا قلم استفاده بشه . احتمال داره به خاطر پیچیدگی طراحی لایه هاتون باشه . این دو لینک ، لینک را مطالعه کنید شاید مفید باشد . (10 سال پیش)
0 0
ممنون از شما . بله لایه هایی که طراحی کردم ، برای اینکه شبیه پنجره های ویندوز بشه دارای لایه های زیاد و پیچیده هست . در مورد hover هم فقط برای این قرار دادم که اگه کسی با گوشی قلم دار کار کرد براش متفاوت باشه . الانم که با note 4 تست میکنم خیلی جالب شده ، و فقط مشکل تاخیر داره . اگه مشکلم با این لینک ها حل نشه ، پس به احتمال 100 از پیچیدگی لایه هاست . خدا خیرتون بده آقای کاشی زاده ، وقتی جواب میدین آدم انرژی می گیره :) (10 سال پیش)
0 0
سلام ، من هنوز این مشکل رو دارم ، و تغییر رنگ دکمه با تاخیر اجرا میشه . البته اینو هم بگم که من لایه ها و کنترل های زیادی دارم و به جای باز کردن اکتیویتی های جدید در مواقع لزوم ، فقط لایه ها رو Visible و Gone میکنم ( همش در یک اکتیویتی ) . ممکنه به خاطر این باشه ؟ (9 سال پیش)
0 0
فهمیدم مشکل از ScrollView هست نه پیچیدگی لایه . شما حتی اگر در لایه فقط "یک" Button داشته باشید ، ولی اونو در ScrollView قرار بدید selector ها با تاخیر اجرا میشن . از طرف دیگه اگه 100 لایه و ویجت دیگه داشته باشین ولی ScrollView نداشته باشین این تاخیر وجود نداره . یعنی ScrollView باعث تاخیر میشه . لطفا اگه میتونید امتحان کنید ببینید برای شما هم همینطوره ؟ ( زیاد وقت نمیگیره فقط یه بار دکمه دارای سلکتور بسازید و بار دوم همونو داخل اسکرول ویو قرار بدید ) . اگه برای شما هم این تاخیر وجود داره برای حل این مشکل چکار میشه کرد ؟ 100 % برنامه های شما ScrollView دارن و 100 % دکمه هاتون selector دارن . پس این مشکل برای شما هم هست ! تا حالا متوجه نشدید . (9 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .