- Framelayout içindeki elemanları birbirinin üzerine gelecek şekilde üst üste koyar. Overlapping elemanlar için kullanılabilir.
- 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.
- Ripple ve elevation kullanan bir widget yapmak için: https://www.youtube.com/watch?v=YPrjL3QKs5I
- Material design kurullarına göre kenar boşlukları 8’in katları, yazı boyutları 4’ün katları şeklinde olmalıdır.
- Material color kullanımı:
- Material tema renk atamaları:
- Font kullanımı ile ilgili bilgiler Udacity Bold Graphic Design Ders 15, 16 ve http://typedia.com/learn/only/anatomy-of-a-typeface/
- Fonts in a font family:
- 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);
- Bir görseli circular drawable yapmak için RoundedBitmapDrawable sınıfını kullanabiliriz.
- 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"/>
- 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. Drawable 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)
- Activity Content Transition: Activity and Fragment Transitions in Lollipop
Code Sample: https://github.com/udacity/ud862-samples/tree/master/TransitionsQuiz
- Shared element transition: Implementing Shared Element Transitions
- Instructive Motion: Implementing Instructive Motion
- AnimatedVectorDrawables: Implementing AnimatedVectorDrawables
- Device metrics tool: https://developers.themoviedb.org farklı ve popüler cihazların çözünürlüğünü gösteriyor.
- Telefon ve tablet arasında farklı olan değerleri if else blokları ile kodun içinde atamak yerine farklı resource dosyaları içine kaydedebiliriz.
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.