LayoutInflater
May 3, 2017
获取LayoutInflater 的两种方法
123LayoutInflater inflater = getLayoutInflater();LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(LAYOUT_INFLATER_SERVICE);设置全屏的两种方法,代码设置
这行代码必须设置在setConentView(R.layout.main) 之前
12requestWindowFeature(Window.FEATURE_NO_TITLE);getWindow().setFlags(WindowManager.LayoutParams. FLAG_FULLSCREEN , WindowManager.LayoutParams. FLAG_FULLSCREEN);布局文件设置
1android :themen="@android:style/Theme.NoTitleBar.Fullscreen"[x] 巧用ViewPager 打造不一样的广告轮播切换效果
总结: - viewpager 要实现显示多个条目 需要设置viewpager的外层的布局文件和viewpager都要设置为false
设置相应的属性即可
设置viewpager的移动动画
android:clipChildren="false"
viewPager.setPageTransformer
- 实现透明
实现 AlphaPageTransformer implements ViewPager.PageTransformer
调用 viewPager.setPageTransformer(new AlphaPageTransformer());
12345678910111213141516171819202122232425
private static final float DEFAULT_MIN_ALPHA = 0.5f;private float mMinAlpha = DEFAULT_MIN_ALPHA;public void pageTransform(View view, float position){ if (position < -1) { view.setAlpha(mMinAlpha); } else if (position <= 1) { // [-1,1] if (position < 0) //[0,-1] { float factor = mMinAlpha + (1 - mMinAlpha) * (1 + position); view.setAlpha(factor); } else//[1,0] { float factor = mMinAlpha + (1 - mMinAlpha) * (1 - position); view.setAlpha(factor); } } else { // (1,+Infinity] view.setAlpha(mMinAlpha); }}
- 实现缩小
> view.setSacleX();
>
> view.setScaleY();
1234567891011121314151617181920212223242526272829303132333435363738394041
public class ZoomOutPageTransformer implements ViewPager.PageTransformer { private static final float MIN_SCALE = 0.70f; private static final float MIN_ALPHA = 0.5f; public void transformPage(View view, float position) { int pageWidth = view.getWidth(); int pageHeight = view.getHeight(); if (position < -1) { // [-Infinity,-1) // This page is way off-screen to the left. view.setAlpha(MIN_ALPHA); view.setScaleX(MIN_SCALE); view.setScaleY(MIN_SCALE); } else if (position <= 1) { // [-1,1] // Modify the default slide transition to shrink the page as well float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position)); float vertMargin = pageHeight * (1 - scaleFactor) / 2; float horzMargin = pageWidth * (1 - scaleFactor) / 2; if (position < 0) { view.setTranslationX(horzMargin - vertMargin / 2); view.setScaleX(1 + 0.3f * position); view.setScaleY(1 + 0.3f * position); } else { view.setTranslationX(-horzMargin + vertMargin / 2); view.setScaleX(1 - 0.3f * position); view.setScaleY(1 - 0.3f * position); } // Scale the page down (between MIN_SCALE and 1) // Fade the page relative to its size. view.setAlpha(MIN_ALPHA + (scaleFactor - MIN_SCALE) / (1 - MIN_SCALE) * (1 - MIN_ALPHA)); } else { // (1,+Infinity] // This page is way off-screen to the right. view.setScaleX(MIN_SCALE); view.setScaleY(MIN_SCALE); view.setAlpha(MIN_ALPHA); } }}
- 实现旋转
> view.setPivotX();
>
> view.setPivotY();
12345678910111213141516171819202122232425262728293031323334
private static final float DEFAULT_MAX_ROTATE = 15.0f;private float mMaxRotate = DEFAULT_MAX_ROTATE;public void pageTransform(View view, float position){ if (position < -1) { // [-Infinity,-1) // This page is way off-screen to the left. view.setRotation(mMaxRotate * -1); view.setPivotX(view.getWidth()); view.setPivotY(view.getHeight()); } else if (position <= 1) { // [-1,1] if (position < 0)//[-1,0] { view.setPivotX(view.getWidth() * (0.5f + 0.5f * (-position))); view.setPivotY(view.getHeight()); view.setRotation(mMaxRotate * position); } else//[0,1] { view.setPivotX(view.getWidth() * 0.5f * (1 - position)); view.setPivotY(view.getHeight()); view.setRotation(mMaxRotate * position); } } else { // (1,+Infinity] // This page is way off-screen to the right. view.setRotation(mMaxRotate); view.setPivotX(view.getWidth() * 0); view.setPivotY(view.getHeight()); }}
[x] Android 探究 LayoutInflater setFactory
总结: - 可以获取相关的属性
- 可以进行相关的替换 将xml中的相关的TextView 替换为自定义的TextView123456789101112131415LayoutInflaterCompat.setFactory(LayoutInflater.from(this), new LayoutInflaterFactory(){public View onCreateView(View parent, String name, Context context, AttributeSet attrs){Log.e(TAG, "name = " + name);int n = attrs.getAttributeCount();for (int i = 0; i < n; i++){Log.e(TAG, attrs.getAttributeName(i) + " , " + attrs.getAttributeValue(i));}return null;}});- 获取字体12345if (name.equals("TextView")){MyTextView view = new com.zhy.MyTextView(context,attrs);return view;}123456789if (typeface == null){typeface = Typeface.createFromAsset(getAssets(), "hwxk.ttf");}//设置相应的字体if ( view!= null && (view instanceof TextView)){((TextView) view).setTypeface(typeface);}看Android相关的书籍(一个小时)
- [ ] Android 群英会
写代码
学习总结
其他:
未解决的问题
- 笔记代码应该整体对齐的方式
- 笔记模板的创建