Android UI

  1. Framelayout içindeki elemanları birbirinin üzerine gelecek şekilde üst üste koyar. Overlapping elemanlar için kullanılabilir.

  2. Elevation değeri UI elemanının ne kadar yukarıda olduğunu belirler. Elevation değeri arttıkça alttaki gölge büyür.

  3. Ripple ve elevation kullanan bir widget yapmak için: https://www.youtube.com/watch?v=YPrjL3QKs5I

  4. Material design kurullarına göre kenar boşlukları 8’in katları, yazı boyutları 4’ün katları şeklinde olmalıdır.
    ui1


  5. Material color kullanımı: ui2

  6. Material tema renk atamaları: ui3

  7. Font kullanımı ile ilgili bilgiler Udacity Bold Graphic Design Ders 15, 16 ve http://typedia.com/learn/only/anatomy-of-a-typeface/

  8. Fonts in a font family: ui4
    u5
    u6ui7


  9. Kendi fontumuzu bir uygulamaya eklemek için, assets klasörü altına ttf dosyasını koyuyoruz. Sonra aşağıdaki gibi bir nesne yaratıp text alanlarında setTypeface değerine bu nesneyi parametre olarak veriyoruz. 
    Typeface courgette = Typeface.createFromAsset(getActivity().getAssets(), "Courgette-Regular.ttf");headlineView.setTypeface(courgette);

  10. Bir görseli circular drawable yapmak için RoundedBitmapDrawable sınıfını kullanabiliriz.ui8.png

  11. Fixed aspect ratio ImageView: bunu kullanacağımız ekranın ebatlarını bilmiyorsak her zaman 3:2 oranında görsel göstermek için kullanabiliriz. Önce ImageView sınıfını extend edip onMeasure metodunu override ediyoruz. Sonra bunu layout xml içinde kullanıyoruz ve height değerini 0 atıyoruz.
    public class ThreeTwoImageView extends android.support.v7.widget.AppCompatImageView
    {
        public ThreeTwoImageView(Context context)
        {
            super(context);
        }
    
        public ThreeTwoImageView(Context context, AttributeSet attrs)
        {
            super(context, attrs);
        }
    
        public ThreeTwoImageView(Context context, AttributeSet attrs, int defStyleAttr)
        {
            super(context, attrs, defStyleAttr);
        }
    
        @Override
        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
        {
            int threeTwoHeight = MeasureSpec.getSize(widthMeasureSpec) * 2 / 3;
            int threeTwoHeightSpec = MeasureSpec.makeMeasureSpec(threeTwoHeight, MeasureSpec.EXACTLY);
            super.onMeasure(widthMeasureSpec, threeTwoHeightSpec);
        }
    }
    
    <mk.org.twothird.ThreeTwoImageView 
        android:layout_width="match_parent" 
        android:layout_height="0dp" 
        android:scaleType="fitXY" 
        android:src="@drawable/p"/>

    ui9.png


  12. Scrim Gradient: kullandığımız beyaz bir butonun arka plan da beyaz olursa tam görünmemesi durumunu engellemek için görsellerin üzerine gölge düşürebiliriz. ui10ui11Drawable altına scrim.xml dosyası kaydet:
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
           android:shape="rectangle">
    
        <gradient
            android:angle="-90"
            android:centerColor="#00000000"
            android:endColor="#4d000000"
            android:startColor="#00000000"
            android:type="linear"/>
    </shape>

    Sonra layout içinde bir FrameLayout içine önce resmi sonra boş bir view ve arkaplana scrimi en üstede texti koyabiliriz. (See: Background Protection @ Bold Graphic Design)


  13. Activity Content TransitionActivity and Fragment Transitions in Lollipop 
    Code Sample: https://github.com/udacity/ud862-samples/tree/master/TransitionsQuiz


  14. Shared element transition: Implementing Shared Element Transitions

  15. Instructive MotionImplementing Instructive Motion

  16. AnimatedVectorDrawablesImplementing AnimatedVectorDrawables

  17. Device metrics tool: https://developers.themoviedb.org farklı ve popüler cihazların çözünürlüğünü gösteriyor.

  18. Telefon ve tablet arasında farklı olan değerleri if else blokları ile kodun içinde atamak yerine farklı resource dosyaları içine kaydedebiliriz. r1r2
    Eğer match_parent değeri verilen bir buton tablette büyük görünüyorsa, tablete tam değer telefona match parent verilebilir. Match parent özel bir değer olduğu için doğrudan dimes dosyasına yazılamaz onun etrafından dolanmak için dimens dosyası içinde bir item tagi oluşturarak değerini -1 verdikten sonra değeri kullanabiliriz.
    r4r5

Leave a comment