关于第一个launcher开发笔记

时间:2022-07-26 16:47:48

本笔记主要记录阅读关于launcher代码是的相关知识点。

viewpager的简单使用(适配器模式):https://www.cnblogs.com/fuly550871915/p/4922953.html

PagerTransformer

我们知道可以给ViewPager设置一个setPagerTransformer属性,设置时候需要我们自己来实现PagerTransformer接口,实现这个接口的时候要实现该接口中的方法,transformPage,该方法接收两个参数,其中一个是position,如果你直接打印position出来可能会看得你云里雾里,实际上position表示的是第一个参数View的position,把这两个参数一起打印出来就可以找到规律了:

比如从第1页滑动到第2页:

第一页position的变化为  [0,-1]

第二页position的变化为  [1,0]

知道了这个我们就可以写一个简单的切换动画了。

setCurrentItem(int index)方法主要用来制定初始化的页面。例如加入3个页面通过setCurrentItem(0)制定第一个页面为当前页面

 

setClipChildren(false);  setClipToPadding(false);(也可以在xml里直接设置)

1.clipChild用来定义他的子控件是否要在他应有的边界内进行绘制。 默认情况下,clipChild被设置为true。 也就是不允许进行扩展绘制。

2. clipToPadding用来定义ViewGroup是否允许在padding中绘制。默认情况下,cliptopadding被设置为ture, 也就是把padding中的值都进行裁切。

ViewPropertyAnimator(http://android.jobbole.com/84713/)

虽然属性动画给我们提供了ValueAnimator类和ObjectAnimator类,在正常情况下,基本都能满足我们对动画操作的需求,但ValueAnimator类和ObjectAnimator类本身并不是针对View对象的而设计的,而我们在大多数情况下主要都还是对View进行动画操作的,因此Google官方在Android 3.1系统中补充了ViewPropertyAnimator类,这个类便是专门为View动画而设计的。

 

android  studio制作.9图片:https://blog.csdn.net/qq_33703877/article/details/82713593

 关于launcher中应用的启动,删除:(其核心操作是ResolveInfo类)

启动:

                    ResolveInfo info = (ResolveInfo) mApps.get(position);
                    //该应用的包名
                    String pkg = info.activityInfo.packageName;
                    //应用的主activity类
                    String cls = info.activityInfo.name;
                    ComponentName componet = new ComponentName(pkg, cls);
                    Intent i = new Intent();
                    i.setComponent(componet);
                    startActivity(i);

删除应用:

                    Uri packageUri = Uri.parse("package:" + pkg);
                    Intent deleteIntent = new Intent(Intent.ACTION_DELETE, packageUri);
                    startActivity(deleteIntent);

删除数据后注意要刷新数据,显示正确的图标。(暂未解决)