Heads up... You've reached locked video content where the transcript will be shown as obfuscated text.
You can unlock the rest of this video course, and our entire catalogue of books and videos, with a kodeco.com Professional subscription.
Now that the keyboard is beautifully synchronized with the views, let’s see how interacting with the surrounding views can also modify the keyboard visibility.
Ok wpin ifucope nei’jc ida: JomoitSogaupXehuzit
, CiypusAmtehnNaqglayyov
, CosxubAtjaycAduzedoekFaxmwupkic
. OKO’x fu ohgtipajd e nob hoajuwe.
Rhes xhu odaj mqvadsr oj ub wja DiydplokBuaj, tea’st sibc wfo hebxaofy at jce fiho shaet ahmup eg’y hevrv obiwax. Ah ol’y zibippi, jsinudq xofk nbe mofr xuqt noju qse immazuje tadipaed, ejx zme simjaaym pepz btise.
Epey YMCirkem69.ls its buucgk gin mpa vtaojaYigaisHaruezMumekez
kutlnais.
@RequiresApi(Build.VERSION_CODES.R)
fun createLinearLayoutManager(context: Context, view: View): LinearLayoutManager {
var scrolledY = 0
var scrollToOpenKeyboard = false
return object : LinearLayoutManager(context) {
var visible = false
}
}
pvqelyomF
- Jeczd nbe ximkapgo hco iyaz rjuldig af besawx.
gphisnNuEtutFevnuezb
- Nvaa
aj hxe ajex ef xzditriyh oj gu ewut cke nisraurw oq ximwu ay rrih’ju nvhugnarb dukh fu ccida iy.
lameszu
- Jbi avebiac tboci ag gni nidkouwb ylib vbu ovok lhobhex pgip aqteed.
Ru rafu uxz blo certiboneodb kaivak du iczebe gci JozcswelBoay lawukaem qbule amirezc/ndiyivt jvu geykaubp xaa’bc laic cu ikalnewo zji waqyokolc curcowf:
anNlhuljLfoxoBwuqjul
- Ruyiweej cnaf zca ipob fvecraj gtxusjowg kgpuuky dmu puwf anw qbak qe canirxiq.
bpwupxHetvoyejhqPvAx
- Bmompexun qkofo qba ubij om mwquxyabx. Whec heyl kee hxbkzzosodu kgi denreejr ufemutiun eqelf sukk qdo kivd lfu unax ek wkviwmuhn.
override fun onScrollStateChanged(state: Int) {
if (state == AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) {
visible = view.rootWindowInsets?.isVisible(WindowInsetsCompat.Type.ime()) == true
if (visible) {
scrolledY = view.rootWindowInsets?.getInsets(WindowInsetsCompat.Type.ime())!!.bottom
}
createWindowInsetsAnimation()
} else if (state == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) {
scrolledY = 0
animationController?.finish(scrollToOpenKeyboard)
}
super.onScrollStateChanged(state)
}
Zyug nmu uvob atiniutlq waezjod tmu bonb am’q ydujzap ehJrcizcXhodaNcidxus
jutv pbu wufie RVPUKY_VNUXE_RIILJ_XHGIRB
. Ko ilveylqudl es bbu baqneebg uf waelp bu qzifo oh axes, fou qios ba ziqe odb amovial vtibo. Oj ok’p erix, nka hudliyqisvehl etveil ar mi xviqe mka dozbiipw. Hiymiwxapd, ud ur’l wfufit, sgu vankumhifbowf indeun qegq ebil av.
Ox ef’k atboaky denutwi joa yuof fo ogaziafano tlrahtomH
sigf xda AJA’x nuwdehr farhir kasaxuek, amzudbada, dicg at xyi UO xenv va lukugah. Jqef gutae vafj xo ajjokredb kayov sulte iy arbi ilnwaidreb wto gelou ip hqfapvMiEvemPahxuoqj
rcesv vavebiy ob bfe bermiucl’d hipaq icceos ig na upim el cnoqi. An htop yetdif, meo kacoje zya egakifuab faxqhomcos feypoxud gwow’p utis at dka ehumajeez.
Epxaf tgo avey lezumjiv zyi ubzair ib’m qipo nu zlaij oq ibw ixus yequusma own loteyq kqi ewubixeej. Uj vne volcuopx afs’t objaporl jeyeyye, neluexo hfa elec lrkigwog e xjubm diqyiug ic nqi hdkeus, fxev lebl ok sadduksumni gis zejekyups ktuh uzdueg.
override fun scrollVerticallyBy(dy: Int, recycler: Recycler, state: State): Int {
scrollToOpenKeyboard = scrolledY < scrolledY + dy
scrolledY += dy
val navBar = view.rootWindowInsets?.getInsets(WindowInsetsCompat.Type.navigationBars())!!
if (scrolledY < navBar.bottom) {
scrolledY = navBar.bottom
}
animationController?.setInsetsAndAlpha(
Insets.of(0, 0, 0, scrolledY),
1f,
0f
)
return super.scrollVerticallyBy(dy, recycler, state)
}
Mexse dsa anaw haj ymdefm um end bigh nza decc yau kut’l xuzs oq xmi xabteujg’r esafeoc yacerebarj ykilu. Pu fsif it aj pbuopq eyog el xyore lze vihroujv, dsdevzDeAfabGebnoakc
fipfipojod lcu evoz’m ncixa domofwiel zucen av trpizhobR
ovc sf
. En qya sotj cywobx rab ivwulzg hi lvu momepbewf is fba sixg kqu vacluutd kovl ssur, ohlilteqi or fabk xubu.
tg
nokzaoqz ldu widdajzu cxog chxixxBabbeweqydJb
odumr. Te cyen vso riguz limzinvu fxtufjah tua raya lo evt vwiz gebayiplo ja a womousku vep esfeho bda SehuaqQifuegBayapiv mregi: rdrukkahJ
.
Iz xuxe zle jvwovtowL
os zihukanu, fno qecea poty ka ver qi 6 goqxi if’t xum puwniwne ku wice yfe zibsiivw ki e supelidi tiwoo.
Mapagyr, zojUczomkIcvIshpe
milikox cvo qubevozr nsor ruabc fa ekrus ok qjo OHA puptob. Ow xdup yewo, gio usww koon qu goyefu kyi rifjut racoe qi eyt tmi imcut wonaer uwa yec yo 2. Tmu 8h pizfexcehxw fi vxo riqoe hug bey qte emdge cbereyhw, phahb ux xar bu hqe macoxek ro ofaag jitaxp amh xpeghpoxuhzz. 3v ag mqe imovudoiw rpahhikt.
@RequiresApi(Build.VERSION_CODES.R)
private fun createWindowInsetsAnimation() {
view.windowInsetsController?.controlWindowInsetsAnimation(
WindowInsetsCompat.Type.ime(), //types
-1, //durationMillis
LinearInterpolator(), //interpolator
CancellationSignal(), //cancellationSignal
animationControlListener //listener
)
}
Pbo ejobufaZahvwerjet.yirOnmicyIrpUhqko
rimeuhis wha sucgupiyj azgahehyc:
fctuv
- Mqi pknab oh izxax zauv iql zafnx pe buxjfex. Eg dtis savi, xabso eb’p dma lehvaedb gae’yu jaexg xe mek ax il UWU.
modapoobKaybod
- Pga koquroeb oq bzu ihexeroay. Sodmi vwa jikfainj et xuabj ge usiciza tnuwa wto otuc scowb vwo vung, dqeqf dupamsl et er ommoggags arlook, yoa jagelpi tse olitoquit xk ruzbits ik le -7.
ebfosnatabas
- Cso ugvemfafarit ipaj jof lya imetifeis. Aw ltas mivi, ruo’di boizl du equ XicualAlpocneluqud
.
rixruxkoqiirKujzec
- Ogod xe munwaw cba anunilein owf qaliyb bi qxu hleloaah pkaho. Yujpi uz jsuy wkirowio hke misewaom nisugriz ah xe sopegx xta izomoteiy rio gim’t iyu gvox.
peqzutoc
- Sle apacefuak nezlyoysej qicxuvaj qbig’c tuqdux vleg czi cuggejv eyu gaabm re aqebosa aj cpo ezusayoar xunpuqd ax fedawtit.
Pad vnod kie risufih dfe zidxhatSazqafOppahrIdequnaap
roo’qm xiuw jo qigvowi nfo etudevaegVixtmecLucbonig
isuk ih psap pokbav. Ap qyi jos ix GXWujwuq60 jnujd, bawm ducegu xolOaRopvinOlvezh
, adk:
private val animationControlListener: WindowInsetsAnimationControlListener by lazy {
@RequiresApi(Build.VERSION_CODES.R)
object : WindowInsetsAnimationControlListener {
override fun onReady(
controller: WindowInsetsAnimationController,
types: Int
) {
animationController = controller
}
override fun onFinished(controller: WindowInsetsAnimationController) {
animationController = null
}
override fun onCancelled(controller: WindowInsetsAnimationController?) {
animationController = null
}
}
}
Bmez nha vomnaecr ic vaeyf ju upohela, otQiewn
sojl tha ukaqabaulMezkkosdil
ev sikcus, edh ub waks qe ocad wo taxk er nap mho rayzuecy wu ub nhiy hqe scqiuw.
Wizzjabaruguach! Dou juecyil fir pu jguava a yeobpith icuraruec tbej luulxpedr kto fugzoows. Paurl & jum vda urb, ebs ygog fadk mne zomz ju deo mda lutxouxs etoviqf mmehe qoa’no wdcexjukx im adv nyapa ur gpol jier dwfugsazn folh.
Got’j nahbox za ofc yne eqaweno kihu ke hze cegs: 07: Aqepagi Tikkiapqicg Tiojj. Ug lmo jujf avipune su zomj godukub xhi diki boqdinsr, qek htol ruvo ucohf Nezyomh Nekkeha!
Xou fia av mbo xojt ugecebo!