首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

学习|Android利用Appintro快速制作启动界面(附源码)

Appintro启动界面 每当我们程序更新时,一般第一次进入程序时会有个快速启动界面,用于介绍程序最新的更新东西,及一些简单的宣传,单独设置View进行播放每次换新就感觉很麻烦,Android中Appintro...Appintro使用核心方法 添加依赖 程序的build.gradle中加入Appintro的依赖项 allprojects { repositories {...isWizardMode) { setOffScreenPageLimit(fragments.size()); } mPagerAdapter.notifyDataSetChanged...Fragment,要生成Fragment有两种方法: 使用Appintro自己的SliderPage 使用自定义布局的Fragment 使用Appintro自已的SliderPage 这个相对来说非常简单,创建...android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment /** * 作者:Vaccae * 创建时间

1.5K10
您找到你想要的搜索结果了吗?
是的
没有找到

Android开发笔记(一百七十二)第二代翻页视图ViewPager2

this, 60), 0, Utils.dip2px(this, 60), 0);     cv_content.setClipToPadding(false); // false表示不裁剪下级视图 重新运行测试...撤销刚加的边缘特效代码,再给测试页面的Java代码中补充下面几行:     // ViewPager2支持翻页时展示切换动画     // 创建页面转换器,用于计算切换动画的各项参数     ViewPager2...360); // 设置页面的旋转角度         }     };     vp2_content.setPageTransformer(animator); // 设置二代翻页视图的页面转换器 重新运行测试...原先ViewPager采用的翻页适配器叫做FragmentStatePagerAdapter,而ViewPager2采用了FragmentStateAdapter,两个适配器的名称差了个“Pager”。...比如下面是采用FragmentStateAdapter的新型适配器代码例子: public class MobilePagerAdapter extends FragmentStateAdapter {

2.2K30

ViewPager刷新问题原理分析及解决方案(FragmentPagerAdapter+FragementStatePagerAdapter)ViewPager+FragmentPagerAdapte

简单整理如下: ViewPager+FragmentPagerAdapter为何不能通过setAdapter做到整体刷新 第二次设置PagerAdapter的时候,首先会将原来的Fragment进行清理,之后调用...populate()重建,只是重建的时候并不一定真的重新创建Fragment,如下: public void setAdapter(PagerAdapter adapter) { if (mAdapter...FragmentPagerAdapter如何通过notifyDataSetChanged刷新ViewPager FragmentPagerAdapter中的数据发生改变时,往往要重新将数据设置到Fragment...,或者干脆新建Fragment,而对于用FragmentPagerAdapter的ViewPager来说,只是利用其notifyDataSetChanged是不够的,跟踪源码会发现,notifyDataSetChanged...这里就需要用户手动提供接口变更参数了,自定义的FragmentAdapter覆盖instantiateItem,自己手动获取缓存Fragment,attach之前,将参数给重新设置进去,之后,Fragment

3.1K20

ViewPager无限滑动

最近项目里的一个页面的banner功能出了问题,使用的是viewPager + handler实现的,之前的代码实在是设计的过于复杂,就自己重新实现了一遍。...执行完container.removeView((View) object)后,可以使用一个List来维护回收的View,这样可以避免创建大量的View对象——就像ListView的BaseAdapter...ViewPager.setAdapter(PagerAdapter adapter) 首先把创建好的PagerAdapter对象设置给ViewPager对象,这样,它们就关联了。...不过:PagerAdapter不像BaseAdapter那样,notifyDataSetChanged方法UI表现上是有问题的,建议每次数据发生变化后,直接使用setAdapter重新关联。...有意思的是,onCreate中setAdapter之后,第一次viewPager.setCurrentItem(adapter.getStartPageIndex())并不会引起ANR,应该是onCreate

2.2K70

recycleview的优化_recyclerview原理

这个机制会导致一个问题,启动应用之后屏幕可见范围内,如果只有一张卡片可见,当滚动的时 候,RecyclerView找不到可以重用的view了,它将创建一个新的,因此滑动到第二个feed的时候就会有一定的延时...线程,处理输入事件、动画、布局、记录绘图操作,每一个条目进入屏幕显示前都会被创建和绑定view; 2)渲染(Render)线程把指令送往GPU。...RecyclerView开发工程师将创建和绑定移到前一帧,使UI线程与渲染线程同时工作,一个条目即将进入视野时预取数据。... 25.1 版本中,预取操作被分为单独的创建/绑定操作,比对整组条目操作更容易被纳入 UI 线程的空隙中。...,RecyclerView的缓存复用机制可能导致ViewHolder不会重新创建,也不会重新bindView,这样某些ItemView的图片是View属性动画变换后的图片,导致不是自己想要的结果。

3.7K20

Android开发之项目经验分享

Android开发中,除了基本的理论知识,还需要将所学知识运用到真实的项目中,项目中锻炼自己的分析问题、解决问题的能力,本文将总结一下本人项目中遇到的一些问题,总结成章,与大家共勉~~~ 1、如何拉伸一个图片为一条线...drawable目录下创建一个repeat.xml: <?xml version="1.0" encoding="utf-8"?...对象到数据库 //第一步,将Drawable对象转化为Bitmap对象 Bitmap bmp = (((BitmapDrawable)tmp.image).getBitmap()); //第二步,声明并创建一个输出字节流对象...的数据变化时,采用notifyDataSetChanged()无效。...仔细研究后发现,其实adapter是对list的地址的绑定,而当list重新赋值后,会导致了list指向了新的list的地址。

66750

android实现RecyclerView列表单选功能

本文实例为大家分享了android实现RecyclerView列表单选功能的具体代码,供大家参考,具体内容如下 实现思维 1.首先在一行的xml布局中添加一个选中效果的icon图片,选中的情况下INVISIBLE...具体原理请查看下面贴的代码) PS: RecyclerView的实现全部方法就不贴出来了,本人的博客中有RecyclerView各种实现效果文章 1.首先在一行的xml布局中添加一个选中效果的icon图片,选中的情况下...这样可以避免效果会闪 holder.mListSelect.setVisibility(View.VISIBLE); //刷新界面 notify 通知Data 数据set设置Changed变化 //在这里运行notifyDataSetChanged...会导致下面的onBindViewHolder 重新加载一遍 notifyDataSetChanged(); } }); return holder; } @Override public void onBindViewHolder...holder.mListNameText.setText(deivceListData.getmDeviceListDataNameText()); /* onBindViewHolder 方法可能是class

73810

BaseAdapter的notifyDataSetChanged方法

都用过 BaseAdapter的notifyDataSetChanged()方法,用法很简单,当BaseAdapter的数据更新了,需要更改显示,这时候就要调用notifyDataSetChanged(...好好分析一下如何使用以及为什么要使用notifyDataSetChanged方法。...总结而言,NotifyDataSetChanged就是告诉ListView数据变化了,进行数据改变,setAdapter函数将清空所有的数据,并且重新设置监听和添加View。这点有很大的不同。...(); 其实这里的关键就是设置数据变化表示,然后更新数量,重新布局。...那执行完这段代码之后会执行什么呢?requestLayout();熟悉这个函数的都知道,这个函数的调用会让子控件,也就是当前的ListView重新向父控件请求layout。

82330

有关ViewPager使用及解决ViewPager和PagerAdapter中调用notifyDataSetChanged失效问题

加入这个jar包之后就可以使用ViewPager类了。...true" android:layout_marginBottom="20dp" android:text="删除" /> 第二步:创建...但是使用中发现,删除或者修改数据的时候,PagerAdapter无法像BaseAdapter那样仅通过notifyDataSetChanged方法通知刷新View。...child view,这种情况下,所有child view位置均为POSITION_NONE,表示所有的child view都不存在,ViewPager会调用destroyItem方法销毁,并且重新生成...更有效地方法: 更为靠谱的方法是因地制宜,根据自己的需求来实现notifyDataSetChanged的功能,比如,仅需要对某个View内容进行更新时,instantiateItem()时,用View.setTag

62410

浅谈Android设计模式学习之观察者模式

,我们最常用到的控件就是ListView了,而ListView最重要的一个点就是Adapter,我们往ListView添加数据后,我们都会调用一个方法: notifyDataSetChanged(),...跟进这个方法notifyDataSetChanged方法,这个方法定义BaseAdapter中,代码如下: public abstract class BaseAdapter implements ListAdapter...mItemCount; // 获取数据的数量 mItemCount = mAdapter.getCount(); checkFocus(); // 注意这里 : 创建一个一个数据集观察者...mInstanceState = null; } else { rememberSyncState(); } checkFocus(); // 重新布局...AdapterDataSetObserver的onChanged函数中会获取Adapter中数据集的新数量,然后调用ListView的requestLayout()方法重新进行布局,更新用户界面。

48010
领券