直播软件开发,同一分类下仅状态栏切换有无特效两个版本
直播软件开发,同一分类下仅状态栏切换有无特效两个版本实现的相关代码
1、首先是ViewPager无特效效果
这个是ViewPager定义时最初的切换样式
部分布局
1 | <br><com.google.android.material.tabs.TabLayout<br> android:id= "@+id/record_tabs" <br> android:layout_width= "wrap_content" <br> android:layout_height= "match_parent" <br> android:layout_centerHorizontal= "true" <br> app:tabGravity= "center" <br> app:tabMode= "fixed" <br> app:tabTextColor= "@color/grey_7D7D7D" <br> app:tabSelectedTextColor= "@color/black" <br> app:tabIndicatorColor= "@color/black" /><br></RelativeLayout><br><androidx.viewpager.widget.ViewPager<br> android:id= "@+id/record_vp" <br> android:layout_width= "match_parent" <br> android:layout_height= "match_parent" /><br> public class RecordPagerAdapter extends FragmentPagerAdapter {<br> List<Fragment> fragmentList;<br> String[]titles = { "界面1" , "界面2" };<br> public RecordPagerAdapter(@NonNull FragmentManager fm, List<Fragment>fragmentList) {<br> super(fm);<br> this.fragmentList = fragmentList;<br> }<br> @NonNull<br> @Override<br> public Fragment getItem(int position) {<br> return fragmentList.get(position);<br> }<br> @Override<br> public int getCount() {<br> return fragmentList.size();<br> }<br> @Nullable<br> @Override<br> public CharSequence getPageTitle(int position) {<br> return titles[position];<br> }<br>}<br>创建两个空白的Fragment <br>设置ViewPager加载页面<br> private void initPager() {<br> List<Fragment> fragmentList = new ArrayList<>();<br> OutcomeFragment outFrag = new OutcomeFragment(); <br> IncomeFragment inFrag = new IncomeFragment(); <br> fragmentList.add(outFrag);<br> fragmentList.add(inFrag);<br> // 创建适配器<br> RecordPagerAdapter pagerAdapter = new RecordPagerAdapter(getSupportFragmentManager(), fragmentList);<br>// 设置适配器<br> viewPager.setAdapter(pagerAdapter);<br> //将TabLayout和ViwePager进行关联<br> tabLayout.setupWithViewPager(viewPager);<br> } |
2.自定义ViewPager切换特效效果
1 | public class RotateDownPageTransformer implements ViewPager.PageTransformer<br>{<br> private static final float ROT_MAX = 20.0f;<br> private float mRot;<br> public void transformPage(View view, float position) {<br> if (position < -1) {<br> ViewHelper.setRotation(view, 0);<br> } else if (position <= 1) {<br> if (position < 0) {<br> /**<br> * mRot 旋转的角度<br> * 转动的中心(ViewHelper.setPivotX, ViewHelper.setPivotY)<br> */ <br> mRot = (ROT_MAX * position);<br> ViewHelper.setPivotX(view, view.getMeasuredWidth() * 0.5f);<br> ViewHelper.setPivotY(view, view.getMeasuredHeight());<br> ViewHelper.setRotation(view, mRot);<br> } else {<br> mRot = (ROT_MAX * position);<br> ViewHelper.setPivotX(view, view.getMeasuredWidth() * 0.5f);<br> ViewHelper.setPivotY(view, view.getMeasuredHeight());<br> ViewHelper.setRotation(view, mRot);<br> }<br> } else {<br> ViewHelper.setRotation(view, 0);<br> }<br> }<br>} |
以上就是直播软件开发,同一分类下仅状态栏切换有无特效两个版本实现的相关代码, 更多内容欢迎关注之后的文章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现