View.GONE 和 removeView的区别

invisible和gone的区别:

在于invisible只是不可见,但是依然占位,gone表示将控件去除,显示的效果就像没有这个控件存在。


gone 和 removeView 的区别:

removeView 是将该布局从内存中移除

但是gone是依然还在占用内存


最佳实践:

如果需要多次显隐切换 使用view.gone

如果该view根本不会再用到 建议直接removeView

package com.example.mymouleb; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.viewpager.widget.PagerAdapter; import androidx.viewpager.widget.ViewPager; import com.google.android.material.tabs.TabLayout; import java.util.ArrayList; import java.util.List; import android.view.ViewGroup; import androidx.annotation.NonNull; public class LauncherActivity extends AppCompatActivity { private ViewPager viewPager; private TabLayout tabLayout; private GuidePageAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_launcher); viewPager = findViewById(R.id.viewPager); tabLayout = findViewById(R.id.tabLayout); // 准备引导页图片资源ID列表 List<Integer> imageResIds = new ArrayList<>(); imageResIds.add(R.drawable.page1); // 替换为实际图片资源ID imageResIds.add(R.drawable.page2); imageResIds.add(R.drawable.page3); adapter = new GuidePageAdapter(imageResIds); viewPager.setAdapter(adapter); tabLayout.setupWithViewPager(viewPager); // 设置第一个小圆点为实心白色(选中状态) tabLayout.getTabAt(0).select(); } public class GuidePageAdapter extends PagerAdapter { private final List<Integer> imageResIds; // 图片资源ID列表 public GuidePageAdapter(List<Integer> imageResIds) { this.imageResIds = imageResIds; } @Override public int getCount() { return imageResIds != null ? imageResIds.size() : 0; } @NonNull @Override public Object instantiateItem(@NonNull ViewGroup container, int position) { // 加载布局的正确方式:第三个参数必须为false View itemView = LayoutInflater.from(container.getContext()) .inflate(R.layout.page_layout, container, false); ImageView imageView = itemView.findViewById(R.id.guide_image); imageView.setImageResource(imageResIds.get(position)); container.addView(itemView); // 必须手动添加视图 return itemView; // 返回的Object必须是页面视图对象 } @Override public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) { // 强制类型转换并移除视图 container.removeView((View) object); } @Override public boolean isViewFromObject(@NonNull View view, @NonNull Object object) { // 判断视图是否来自instantiateItem返回的对象 return view == object; } } }给这个代码的结果页面上加上引导页指示器,且在下方显示三个小圆点,在第一页时圆点为白色,其余圆点为透明色,第二页用理,到第三页时不显示小圆点,添加一个开启按钮,点击后跳转到LoginActivity
最新发布
05-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值