当前位置: 首页 > news >正文

jsp和php哪个做网站快织梦做的相亲网站

jsp和php哪个做网站快,织梦做的相亲网站,网站做政务,阿里云云虚拟主机在新闻资讯 APP 中添加不同新闻分类页面#xff0c;通过 ViewPager2 实现滑动切换 核心组件的作用 ViewPager2#xff1a;是 ViewPager 的升级版#xff0c;基于RecyclerView实现#xff0c;支持水平 / 垂直滑动、RTL#xff08;从右到左#xff09;布局#xff0c;且修…在新闻资讯 APP 中添加不同新闻分类页面通过 ViewPager2 实现滑动切换 核心组件的作用 ViewPager2是 ViewPager 的升级版基于RecyclerView实现支持水平 / 垂直滑动、RTL从右到左布局且修复了 ViewPager 的诸多缺陷如 notifyDataSetChanged 不生效、滑动冲突等。Fragment可复用的 UI 组件作为 ViewPager2 的 “页面” 内容每个滑动页面对应一个 Fragment 实例。FragmentStateAdapterViewPager2 的适配器专门用于管理 Fragment 与 ViewPager2 的绑定负责创建、销毁 Fragment类似 RecyclerView 的 Adapter。TabLayout可选通常与 ViewPager2 配合使用显示标签标题实现 “标签点击切换 滑动切换” 的联动效果。 开发步骤 1.引入依赖 ViewPager2 属于 AndroidX 库需在build.gradleModule 级别中添加依赖确保版本兼容 dependencies {// ViewPager2核心依赖implementation androidx.viewpager2:viewpager2:1.0.0// Fragment依赖若已引入AndroidX Fragment可忽略implementation androidx.fragment:fragment-ktx:1.5.6// 可选TabLayout联动依赖与ViewPager2配合implementation com.google.android.material:material:1.9.0 }2.创建Fragment页面 每个滑动页面对应一个 Fragment需创建多个 Fragment如首页、推荐、我的等。 以 首页页面为例NonNullOverridepublic ViewHolder onCreateViewHolder(NonNull ViewGroup parent, int viewType) {View view LayoutInflater.from(context).inflate(R.layout.item_recommend_user, parent, false);return new ViewHolder(view);}每个 Fragment 对应一个布局文件如fragment_home.xml仅需简单的 UI 内容即可。 3.自定义一个ViewPage2布局 在 Activity 的布局文件中添加 ViewPager2若需要标签页可搭配 TabLayout 我这里把之前写的recyclerView给改成了ViewPage2用来实现页面的切换 ?xml version1.0 encodingutf-8? androidx.coordinatorlayout.widget.CoordinatorLayoutxmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoandroid:layout_widthmatch_parentandroid:layout_heightmatch_parent!-- 顶部区域搜索框 分类栏 --LinearLayoutandroid:idid/top_containerandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:orientationverticalandroid:elevation4dpapp:layout_behavior.util.ScrollAwareFABBehavior!-- 搜索栏 --LinearLayoutandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:orientationhorizontalandroid:background#D3D3D3android:padding8dpandroid:elevation2dpEditTextandroid:idid/search_edit_frameandroid:layout_width0dpandroid:layout_height40dpandroid:layout_weight3android:backgrounddrawable/search_bgandroid:paddingHorizontal12dpandroid:singleLinetrue /Buttonandroid:idid/buttonandroid:layout_width0dpandroid:layout_height40dpandroid:layout_weight1android:text搜索android:backgroundTint#4CAF50android:textColorandroid:color/white //LinearLayout!-- 分类栏 --LinearLayoutandroid:idid/category_barandroid:layout_widthmatch_parentandroid:layout_height50dpandroid:orientationhorizontalandroid:backgroundandroid:color/whiteandroid:elevation1dpTextViewandroid:idid/tab_hotandroid:layout_width0dpandroid:layout_heightmatch_parentandroid:layout_weight1android:text热榜android:textSize16spandroid:textColor#333333android:gravitycenterandroid:clickabletrueandroid:background?attr/selectableItemBackground /TextViewandroid:idid/tab_followandroid:layout_width0dpandroid:layout_heightmatch_parentandroid:layout_weight1android:text关注android:textSize16spandroid:textColor#333333android:gravitycenterandroid:clickabletrueandroid:background?attr/selectableItemBackground /TextViewandroid:idid/tab_recommendandroid:layout_width0dpandroid:layout_heightmatch_parentandroid:layout_weight1android:text推荐android:textSize16spandroid:textColor#333333android:gravitycenterandroid:clickabletrueandroid:background?attr/selectableItemBackground /TextViewandroid:idid/tab_cityandroid:layout_width0dpandroid:layout_heightmatch_parentandroid:layout_weight1android:text同城android:textSize16spandroid:textColor#333333android:gravitycenterandroid:clickabletrueandroid:background?attr/selectableItemBackground //LinearLayout/LinearLayout!-- ViewPager2容器 --androidx.viewpager2.widget.ViewPager2android:idid/view_pagerandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:layout_marginTop?attr/actionBarSize /!-- 底部导航栏保持原设计 --LinearLayoutandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:orientationhorizontalandroid:padding8dpandroid:background#FFFFFFandroid:layout_gravitybottom !-- 首页 --LinearLayoutandroid:idid/home_tabandroid:layout_width0dpandroid:layout_heightmatch_parentandroid:layout_weight1android:orientationverticalandroid:gravitycenterImageViewandroid:layout_width25dpandroid:layout_height25dpandroid:layout_gravitycenter_horizontalandroid:srcdrawable/mainandroid:contentDescription首页图标/TextViewandroid:idid/home_textandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:textSize16dpandroid:text首页android:gravitycenter_horizontal//LinearLayout!-- 菜单 --LinearLayoutandroid:idid/menu_tabandroid:layout_width0dpandroid:layout_heightmatch_parentandroid:layout_weight1android:orientationverticalandroid:gravitycenterImageViewandroid:layout_width25dpandroid:layout_height25dpandroid:layout_gravitycenter_horizontalandroid:srcdrawable/menuandroid:contentDescription菜单图标/TextViewandroid:idid/menu_textandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:textSize16dpandroid:text菜单android:gravitycenter_horizontal//LinearLayout!-- 我的 --LinearLayoutandroid:idid/mine_tabandroid:layout_width0dpandroid:layout_heightmatch_parentandroid:layout_weight1android:orientationverticalandroid:gravitycenterImageViewandroid:layout_width25dpandroid:layout_height25dpandroid:layout_gravitycenter_horizontalandroid:srcdrawable/mineandroid:contentDescription我的图标/TextViewandroid:idid/mine_textandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:textSize16dpandroid:text我的android:gravitycenter_horizontal//LinearLayout/LinearLayout /androidx.coordinatorlayout.widget.CoordinatorLayout4.实现FragmentStateAdapter ViewPager2 需要实现FragmentStateAdapter管理 Fragment类似 RecyclerView 的 Adapter。FragmentStateAdapter会根据页面切换动态创建 / 销毁 Fragment优化内存占用。 package com.example.news.adapter;import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; import androidx.viewpager2.adapter.FragmentStateAdapter; import com.example.news.fragment.*;public class CategoryPagerAdapter extends FragmentStateAdapter {public CategoryPagerAdapter(NonNull FragmentActivity fragmentActivity) {super(fragmentActivity);}NonNullOverridepublic Fragment createFragment(int position) {switch (position) {case 0:return new HotFragment();case 1:return new FollowFragment();case 2:return new RecommendFragment();case 3:return new CityFragment();default:throw new IllegalArgumentException(Invalid position: position);}}Overridepublic int getItemCount() {return 4; // 四个分类页面} }5.初始化 ViewPager2 并绑定适配器 public class MainActivity extends AppCompatActivity {private ViewPager2 viewPager2;private TabLayout tabLayout;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);viewPager2 findViewById(R.id.view_pager2);tabLayout findViewById(R.id.tab_layout);// 1. 创建Fragment集合ListFragment fragments new ArrayList();fragments.add(new HomeFragment());fragments.add(new RecommendFragment());fragments.add(new MineFragment());// 2. 创建适配器并绑定ViewPager2MyViewPager2Adapter adapter new MyViewPager2Adapter(this, fragments);viewPager2.setAdapter(adapter);// 3. 可选关联TabLayout与ViewPager2实现标签与页面同步new TabLayoutMediator(tabLayout, viewPager2, (tab, position) - {// 设置标签文本根据position动态设置switch (position) {case 0:tab.setText(首页);break;case 1:tab.setText(推荐);break;case 2:tab.setText(我的);break;}}).attach(); // 必须调用attach()才会生效} }可选配置 ViewPager2 高级属性 根据需求设置 ViewPager2 的滑动方向、预加载、滑动禁用等属性 // 1. 设置滑动方向默认水平可改为垂直 viewPager2.setOrientation(ViewPager2.ORIENTATION_VERTICAL);// 2. 设置预加载页面数量默认预加载相邻1页不能设置为0 viewPager2.setOffscreenPageLimit(1); // 预加载1页左右各1页// 3. 禁用滑动保留编程式切换如仅通过Tab点击切换 viewPager2.setUserInputEnabled(false);// 4. 页面切换监听监听滑动状态、位置变化 viewPager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {Overridepublic void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {// 页面滚动时回调}Overridepublic void onPageSelected(int position) {// 页面选中时回调常用更新标题栏、加载数据等Log.d(ViewPager2, 选中第 position 页);}Overridepublic void onPageScrollStateChanged(int state) {// 滑动状态变化SCROLL_STATE_IDLE静止、SCROLL_STATE_DRAGGING拖动、SCROLL_STATE_SETTLING惯性滑动} });FragmentStateAdapter 的工作原理 FragmentStateAdapter通过createFragment(int position)为每个位置创建 Fragment且会缓存当前页及相邻页的 Fragment数量由offscreenPageLimit控制。当 Fragment 不可见且超出缓存范围时会被销毁调用onDestroy()但状态会被保存通过onSaveInstanceState()下次显示时重建并恢复状态。构造方法必须传入FragmentActivity或Fragment因为适配器需要通过它们的getSupportFragmentManager()和Lifecycle管理 Fragment 生命周期。
http://www.zqtcl.cn/news/10883/

相关文章:

  • 自己在网站开发的客户怎么联系制作自己的网页
  • 企业网站的建设与应用开题报告在centos做网站
  • 做网站产生的流量费怎么算wordpress网页设计
  • 怎么做和京东一样网站来宾住房和城乡建设网站
  • 网站域名使用费网站建设合同 域名
  • 手机怎么做微电影网站wordpress文章列表调用
  • 网站开发获取报价网站多少页面合适
  • 从零开始学做网站cdsn山西省建设监理协会官方网站
  • 高邮网站开发网站备案后换空间
  • 机关网站建设和运行情况汇报wordpress 调用略缩图
  • 山西建设网站的公司公司网站上线
  • 网站备案进度网站运营需要什么条件
  • 乐清小程序关键词优化方法
  • 微信网站建设报价工商注册网上办事大厅
  • 教育机构网站是网站怎么优化 优帮云
  • 免费打开网站网站开发 承接
  • h5企业模板网站模板商城网站开发培训学校
  • 做暧暧前戏视频网站网站框架怎么做
  • 呼伦贝尔网站制作大良网站制作公司
  • 国家重点建设裤网站vs2008如何新建网站
  • 什么时候能用ipv6做网站正能量免费软件
  • 北京南站最新消息深圳企业网站制作平台
  • 网站代码建设 实例中国建设银行官网站积分抽奖
  • 安徽商城网站建设个人网站不能做淘宝客
  • 搭建一个公司网站网站后台备份丢失
  • 源码网站免费网站建设开发软件有哪些
  • 网站制作公司咨询做酒店需要怎么上网站
  • 企业管理培训课程百度云seo的方法有哪些
  • 北京网站建设外包公司软件销售具体怎么做的
  • 网站首页phpcms怎么添加上海装修公司招聘施工队长