• 获取LayoutInflater 的两种方法

    1
    2
    3
    LayoutInflater inflater = getLayoutInflater();
    LayoutInflater inflater = (LayoutInflater)
    mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
  • 设置全屏的两种方法,代码设置

    这行代码必须设置在setConentView(R.layout.main) 之前

    1
    2
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams. FLAG_FULLSCREEN , WindowManager.LayoutParams. FLAG_FULLSCREEN);
  • 布局文件设置

    1
    android :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());

  ​

  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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

      总结:
    
    - 可以获取相关的属性  
    
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    LayoutInflaterCompat.setFactory(LayoutInflater.from(this), new LayoutInflaterFactory()
    {
    @Override
    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;
    }
    });
    - 可以进行相关的替换 将xml中的相关的TextView 替换为自定义的TextView
    1
    2
    3
    4
    5
    if (name.equals("TextView"))
    {
    MyTextView view = new com.zhy.MyTextView(context,attrs);
    return view;
    }
    - 获取字体
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if (typeface == null)
    {
    typeface = Typeface.createFromAsset(getAssets(), "hwxk.ttf");
    }
    //设置相应的字体
    if ( view!= null && (view instanceof TextView))
    {
    ((TextView) view).setTypeface(typeface);
    }
  • 看Android相关的书籍(一个小时)

    • [ ] Android 群英会
  • 写代码

  • 学习总结

    其他:

  • 未解决的问题

    1. 笔记代码应该整体对齐的方式
    2. 笔记模板的创建