Bazılarınızın sadece kodu kontrol etmek ve projelerine kopyalamak için burada olduğunuzu anlıyorum. Ben orada oldum. Ancak, bu makaleyi sadece ben yazdığım için değil, özellikle Android ve genel olarak Nesne Yönelimli Programlama konusunda nispeten yeni olan kişiler için yararlı olabileceğine inandığım için baştan sona okumanızı tavsiye ederim. İstiyorum olanlarınız koda atlamak için, buyur .
Daha önce bir Android (veya bunun için başka bir uygulama ) üzerinde çalıştıysanız, muhtemelen özel bir düzene ihtiyaç duyduğunuz bir noktaya geldiniz. İster basit ister karmaşık bir düzen olsun, çerçeveniz tarafından sunulmayan bir şey yapmanız gerekir. Ve iki seçeneğiniz var:
Her şeyden önce, yeniden kullanılabilirliği düşünün. Yazılım mühendisi olarak ilk günlerimde bunu çok sık düşünmezdim. Bir şeye ihtiyacım vardı - kodunu yazdım ve işe yaradı. Harika! Yoksa öyle mi? Bu bileşene bir kez ihtiyaç duyacağınızı düşünüyorsanız, evet, elbette. Ama öyle sanıyorsanız büyük ihtimalle yanılıyorsunuz.
Bu makalede ele alacağımız AccordionLayout, bir daha asla ihtiyaç duymayacağımı düşündüğüm bileşenlerin sadece küçük bir kısmı, ama sonunda yaptım. Özel bir görünüme ihtiyacım vardı, bu yüzden amacı yerine getiren (sıkıca bağlanmış) bir kod uyguladım. Ancak bu kod yalnızca bir kerelik kullanım içindir - yeniden kullanılamazdı. Ve bir daha benzer bir bileşene ihtiyacım olduğunda, onu tekrar uygulamaya başladım. İşin yarısında, fark ettim ki, zaten böyle (bir şey) yaptım! Bu yüzden geri döndüm, aynı kodu kopyaladım ve ihtiyaç duyduğum yeni projede kullanmaya çalıştım. Ancak kodun geri kalanıyla sıkı bir şekilde birleştirildi ve ayarlanması için çok çalışma gerektirdi. Bu yeniden kullanılabilir bir bileşen değil, işe yaramaz bir bileşendi…
Birkaç yıl ileri saralım… Özel bir bakış açısına ihtiyacım vardı, çoğunuzun yapacağı şeyi yaptım. Ben 'akordeon düzeni android' Googled . Birkaç sonuç vardı (yazarlara övgü), ama aradığım şey bunlar değildi. Bu yüzden özel bir bileşen uygulamam gerektiğine karar verdim. Sadece, bu sefer onu tekrar kullanılabilir hale getirecektim, böylece ben (ve diğerleri) onu ihtiyaç duyulan her yerde kullanabilirim.
Ve sıkıcı kısım burada sona eriyor. Gelelim koda ve biraz açıklayalım. Aslında anlatacak pek bir şey yok. Her şeyden önce, bence tüm yeni bileşenlerin olması gerektiği gibi Kotlin'de yazılmış. Ancak endişelenmeyin, Java kullanıyorsanız tamamen uyumludurlar.
Ana sınıf, AccordionLayout, LinearLayout'un bir çocuğudur ve elde ettiği kadar basittir:
AccordionLayout, yalnızca ExpandableViews ile çalışır. Onlar neler? Akordeon düzeninin genel davranışını tanımlayan başka bir basit sınıf:
ExpandableView soyut sınıfından miras alan her görünüm, akordeon davranışıyla eşleşen birkaç yöntem uygulamalıdır ve hepsi bu, gerisi soyut sınıf içinde işlenir. Soyut fonksiyonlar:
abstract fun getExpandableViewId(): Int abstract fun getRootViewId() : Int abstract fun getClickableViewId() : Int abstract fun getLayoutResId(): Int
BaşlıkAkordeonÖğe
AçıklamaAccordionElement
ResimAkordeonÖğesi
Bu uygulama, gerekirse AccordionLayout içinde farklı düzenlerin kullanılmasına izin verir, yalnızca bu düzenlerin tümünün ExpandableView soyut sınıfını genişletmesini gerektirir. Bu tür görünümlerin oluşturulmasını ve özelleştirilmesini kolaylaştırmak için bir Oluşturucu da uyguladım. Oluşturucu birkaç argümanı kabul eder ve sağlanan argümanlara dayanarak sizin için uygun görünümü oluşturur.
Bu, AccordionElementBuilder tarafından oluşturulan örnek bir düzendir:
Ve ortaya çıkan düzen:
Son olarak, AccordionLayout'u görünümlerle başlatmak gerçekten çok kolay. Bu öz, tüm örnek görünümleri örnek olarak kullanır:
Ve sonuç böyle bir şeye benziyor. İşlevselliği ve farklı düzenleri görebilirsiniz.
Bu örnek sadece temel akordeon işlevselliğini ve farklı düzenleri sergilemek içindir (çok iyi görünmediğini biliyorum). Ama olay bu, onu istediğiniz şekilde özelleştirebilir ve kullanabilirsiniz ya da kendi düzeninizi oluşturabilirsiniz. Örnek bir düzen şöyle görünür:
Görünümü genişletilebilir hale getirmek için yapmanız gereken tek şey, daha önce açıklanan farklı yerleşim kaynaklarını sağlamaktır. Genişletme ve daraltma için özel animasyon eklemek istiyorsanız, bunu önceki örnekte gösterildiği gibi genişlet() ve daralt() yöntemlerini geçersiz kılarak yapabilirsiniz .
Gördüğünüz gibi, bu bileşen artık özelleştirilebilir ve yeniden kullanılabilir ve ihtiyacınız olursa rahatınız için kullanabilirsiniz. Ancak genel olarak, herhangi bir bileşen yeniden kullanılabilir, bunun için plan yapmanız yeterlidir. SOLID ilkelerini kullanın, kodunuzu mümkün olduğunca gevşek bir şekilde birleştirin. Bir bileşeni tekrar kullanmanız gerekeceğini düşünmeseniz bile, başka biri olabilir. Açık kaynak kitaplıklardan payına düşeni almış biri olarak, başkalarına yardım etmenin güzel olduğunu düşünüyorum. Açık kaynak topluluğu bize, geliştiricilere çok şey veriyor. Topluma geri vermemiz gerekiyor. Bu, herkesin kullanabileceği bir açık kaynak kitaplığı sağlamaya yönelik alçakgönüllü girişimim. Bir şeyin iyileştirilebileceğini düşünüyorsanız, bir PR veya yorum açabilirsiniz.
Kaynak kodunu Git hesabımda ve yerleşik ve kullanıma hazır AAR dosyasında bulabilirsiniz .
Neredeyse on yıldır profesyonel olarak çalışıyorum. İnsanların tavsiyelerini dinledim, The Pragmatic Programmer gibi kitaplar okudum ve programcı kurulumu konusunda ergonomik seminerler verdim.
Bu gönderiye giden yolu bulduysanız, bir getirme isteğine yanıt bekleyen bir React bileşeninde her şeyin kırılmasını nasıl önleyeceğiniz konusunda mücadele ediyor olabilirsiniz. Diyelim ki basit bir blog uygulaması yapıyorsunuz.
Bu öyküde, CNN Özellik Öğrenmeye Dayalı Odaksızlık Bulanıklığı Tespiti için Yerel Bir Ölçüt, Zeng TIP'19, Hunan Üniversitesi ve Robot Görsel Algılama ve Kontrol Teknolojisi Ulusal Mühendislik Laboratuvarı incelenmiştir. Bu yazıda: Anahat 2.
Günümüzde görevlerin neredeyse yüzde 30'u chatbotlar tarafından yerine getiriliyor. Şirketler, müşteri desteği, bilgi üretme vb. Hizmetleri sağlamak için sohbet robotlarını kullanır.
Birinci Kısım Aşamalara göre ve ardından Jeolojik Çağlara göre eksiksiz ve ayrıntılı bir Dünya Tarihi, bkz. https://en.wikipedia.
Bu, üniversite sırasında yazdığım Okyanustaki Damla şiir üçlemesinin üçüncü ve son bölümü. Şiirler ilerledikçe oluşturmak istediğim ifade ve sadelik için çalıştığından, şiirleri kıta sayısında daha uzun ve kıta uzunluğunda daha kısa yapma modelini takip ettim.
"Yıldızlarla Dans Etmek" ünlüsü Mel C, kendisini son iki sırada bulduktan sonra şok edici "Grease" Night elemesinden dolayı "boşverdi".
'Vanderpump Kuralları'ndan Lala Kent daha önce Randall Emmett'in kendisini aldattığını göremediğini söylemişti. Ayrıca onun en iyi arkadaşı olduğunu söyledi.
Eski '90 Day Nişanlısı' yıldızı Varya Malina, Geoffrey Paschel ile birlikte olduğunu doğruladı ve onun için toplandı ve takipçilerinden maddi yardım istedi.
Colin Powell ve eşi Alma Powell, neredeyse altmış yıldır evlilerdi. Çiftin evliliği gerçekten zaman testinden geçti.
Facebook'ta adınızı değiştirmek ister misiniz? Sadece birkaç basit adımda yapmak kolaydır.
Her zaman 10.000 adımlık bu keyfi günlük hedefin gerisinde kalıyorsanız, iyi haberlerimiz var. Daha az adım atarsanız sağlığınız da aynı derecede fayda sağlayabilir.
Garden State, ABD'de kendi gazınızı pompalamanın yasa dışı olduğu tek eyalettir. Ne oluyor?
Bu arada, alacakaranlıkta ve dolunayda araba kullanmak da size bir iyilik yapmıyor.
Akış hizmetleri tüm bir sezonu bir kerede düşürdüğünde ortaya çıkan konulardan biri, formatın bireysel bölüm fikrini ortadan kaldırıp kaldırmayacağı tartışmasıdır. Kesintisiz izleme çağında, içerik oluşturucular, izleyicilerinin bir sonraki bölüme neredeyse hemen gitme ihtimalinin yüksek olduğunu biliyorlar ve sonuç olarak, bir şovun tekil bölümlerinin, savaşın üzerinde duran tekil bölümleri fikri, bütün bir hikaye oluşturmaktan daha az önemli.
Fotoğraf: AP Leslie Jones Çarşamba günü Conan O'Brien'a "bir nevi" gördüğü gizli erkek arkadaşını açıp, "Bu bir sır, bu yüzden herkesin onu rahatsız etmesini istemiyorum, biliyorsun ne yaptım? Ben mi söylüyorum? ”49 yaşındaki komedyen, canlı televizyonda görünmesi ve doğrudan onun hakkında sorulması olmasaydı, ilk başta erkeğini tartışmayacağını bile açıkladı - bu, açıkta ilişkiler. "Televizyonda oturup 'Ah, aradığım türden bir adam ...' gibi olmak istemiyorum ve sonra onunla konuşacağım ve o 'Evet, seni duydum Jones, bu tür bir adam arıyorum ”dedi.
Artık yönetmen Taika Waititi, üçüncü Thor filmi Thor: Ragnarok'u yönetmek için gemide olduğuna göre, film hakkında çok daha fazla şey duymaya başlıyoruz. Hulk'un Thor'a katılacağına dair söylentiler duyduk ve görünüşe göre bu doğru, çünkü yeni bir rapor bir sürü başka bilgiyle birlikte bunu doğruluyor.
Brandon Russell (Pinellas İlçe Hapishanesi) Adam, ülkedeki en tehlikeli terör topluluklarından birinin üyesi olmasına rağmen; nasıl bomba yapılacağını bilmesine rağmen; bomba yapım malzemelerine sahip olduğunu bilerek; kolluk kuvvetlerinin, İç Güvenlik uzmanlarının ve Ordu müfettişlerinin “Amerika'nın ulusal güvenliğe yönelik en büyük tehdidi” olarak tanımladıkları her özelliği sergiledikten sonra bile - federal bir yargıç Cuma günü neo-Nazi Brandon Russell'ı tahvil karşılığında serbest bıraktı çünkü yargıç, Russell'ın kimse için tehlike oluşturduğuna dair hiçbir kanıt görmemişti, ama daha çok Russell'ın beyaz olması nedeniyle.
Maggie Gyllenhaal ve Dakota Johnson Londra'daki bir galada poz veriyor, Vanessa Hudgens LA'deki spor salonundan ayrılıyor, Christian Siriano 'Project Runway' 19. sezonu ve daha fazlasını kutlamak için NYC'de. Hollywood'dan New York'a ve aradaki her yere, en sevdiğiniz yıldızların neler yaptığını görün
Utanmaz mezunu Emma Kenney, Showtime dizisinde Emmy Rossum ile çalışma deneyimi hakkında konuştu.
HIV pozitif ve kanserden kurtulan Javier Muñoz, PEOPLE'a “Alınma şansı yoktu” diyor.
Rachael Ray Extra'da "Pek çok insan bana yazdı ve ulaştı ve bizim de çok şey kaybettiğimizi söyledi" dedi.