بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
تاخیر در اجرای فایل های xml از نوع selector
سلام
همونطور که میدونید اگه برای یه 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>
ممنون از شما . بله لایه هایی که طراحی کردم ، برای اینکه شبیه پنجره های ویندوز بشه دارای لایه های زیاد و پیچیده هست . در مورد hover هم فقط برای این قرار دادم که اگه کسی با گوشی قلم دار کار کرد براش متفاوت باشه . الانم که با note 4 تست میکنم خیلی جالب شده ، و فقط مشکل تاخیر داره . اگه مشکلم با این لینک ها حل نشه ، پس به احتمال 100 از پیچیدگی لایه هاست . خدا خیرتون بده آقای کاشی زاده ، وقتی جواب میدین آدم انرژی می گیره :) (10 سال پیش)
فهمیدم مشکل از ScrollView هست نه پیچیدگی لایه . شما حتی اگر در لایه فقط "یک" Button داشته باشید ، ولی اونو در ScrollView قرار بدید selector ها با تاخیر اجرا میشن . از طرف دیگه اگه 100 لایه و ویجت دیگه داشته باشین ولی ScrollView نداشته باشین این تاخیر وجود نداره . یعنی ScrollView باعث تاخیر میشه . لطفا اگه میتونید امتحان کنید ببینید برای شما هم همینطوره ؟ ( زیاد وقت نمیگیره فقط یه بار دکمه دارای سلکتور بسازید و بار دوم همونو داخل اسکرول ویو قرار بدید ) . اگه برای شما هم این تاخیر وجود داره برای حل این مشکل چکار میشه کرد ؟ 100 % برنامه های شما ScrollView دارن و 100 % دکمه هاتون selector دارن . پس این مشکل برای شما هم هست ! تا حالا متوجه نشدید . (9 سال پیش)
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .