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

android全局dialog监听异常退出 android radiogroup监听

react-native的UI框架暂时告一段落、拿起来原生出来梳理一下

1.RadioGroup

1.点击RadioButton监听方法。

.setOnCheckedChangeListener(this); 实现RadioGroup.OnCheckedChangeListener;
 重写onCheckedChanged(RadioGroup group, int checkedId){
 //checkedId 是改变状态的按钮id,并不是选中的按钮id。例:2131624109,并不是1.2.3.4.
 //原因有其二:
 //①:当按钮a为选中状态,b为未选中状态,此时选中b,这里肯定是返回b的id
 //②:当按钮a为选中状态时,我们用group.clearCheck()等方法把所有按钮设置为未选中,
 //这时返回的就是a的id。
 };

2.它的相关方法。
①:group.getCheckedRadioButtonId(); 获得选中的id
②:group.clearCheck();清除radioGroup的选中状态,切记此方法不可在setOnCheckedChangeListener中调用,报错为stack size 8M,综上所得,应该是死循环所致。
③:group.check(int id);设置选中。
3.注意事项:radioButton的checked属性如果为true时,.setOnCheckedChangeListener(this)方法就不会被调用了,所以默认选中最好代码设置默认选中。
4.思路:作为菜单栏使用,点击按钮切换不同界面。与Fragment配合实现,就需要使用transaction来管理fragment。通过transaction的add()、show()方法来切换页面。

2.RecyclerView

高于listView的存在,使列表的数据增加或者删除更加好,就是我理解的插拔式体验。布局管理器可以设置主要的布局风格。复用机制写起来也更加简单。
1.在我的实现中并没有使用到它的监听方法,只是我自己定义了一个item点击的方法。简略代码如下:

Fragment中

... implements RvAdapter.OnItemClickListener
... {
	rvAdapter.setItemClickListener(this);
	}
	@Override
    public void onItemClick(int position) {
        Toast.makeText(getActivity(), ""+position, Toast.LENGTH_SHORT).show();
    }

Adapter中

...implements View.OnClickListener
	private OnItemClickListener mItemClickListener;
    public void setItemClickListener(OnItemClickListener itemClickListener) {
        mItemClickListener = itemClickListener;
    }
    public interface OnItemClickListener{
        void onItemClick(int position);
    }
    @Override
    public void onClick(View v) {
        if (mItemClickListener!=null){
            mItemClickListener.onItemClick((Integer) v.getTag());
        }
    }

2.它的相关方法
①:recyclerView.scrollToPosition();移动到第几行。
②:recyclerView.addItemDecoration();装饰物。常用作添加分割线。接收一个ItemDecoration,
这是一个抽象类,可以使用DividerItemDecoration。专用作分割线的装饰物。

DividerItemDecoration decoration = new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL);
        decoration.setDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.rv_decoration));
        recyclerView.addItemDecoration(decoration);

其中布局文件是一个shape
③:recyclerView.setLayoutManager(),设置主要的布局风格,分别由竖向LinearLayoutManager,
横向LinearLayoutManager.HORIZONTAL,瀑布流GridLayoutManager。
④:recyclerView.setItemAnimator(),设置动画,接收ItemAnimator,同样我们传入它的子类就可以。

DefaultItemAnimator defaultItemAnimator = new DefaultItemAnimator();
        defaultItemAnimator.setAddDuration(1000);	//添加
        defaultItemAnimator.setRemoveDuration(1000);	//删除
        recyclerView.setItemAnimator(defaultItemAnimator);

⑤:notifyItemInserted(); 当列表的数据源发生改变的时候,使用这个方法添加,接收position,
这个position就是要插入第几条数据中,
⑥:notifyItemRangeChanged();当列表数据发生改变的时候,使用这个方法使界面与数据重新绑定

ViewPager

作用是屏幕滑动展示,图片轮播图,引导页。
1.在布局中定义好后,设置Adapter。这个Adapter需要继承PagerAdapter
它的适配器有三种
①:PagerAdapter:
②:FragmentPagerAdapter :它的父类是PagerAdapter,该类更专注每一页都是Fragment的情况,而每个Fragment都保存在内存中,因此更适用静态页。
③:FagmentStatePagerAdapter:它的父类是FragmentStatePagerAdapter,该类只保存当前显示的页面,当页面消失就会销毁释放资源,在页面显示时生成新的页面。好处是当拥有大量页面时不占用过多的内存。
2.Transformer
要实现滑动时的动画,就需要这个Transformer,
基类 BasePageTransformer
渐变 AlphaPageTransformer
旋转 RotatePageTransformer
立方体 CubePageTransformer
可折叠的 AccordionPageTransformer
急速 FlipPageTransformer
前背景和后背景渐变,后背景有个放大缩小效果 DepthPageTransformer
前背景和后背景渐变 ZoomFadePageTransformer
前背景和后背景直接缩放 ZoomCenterPageTransformer
左右滑动缩放 ZoomPageTransformer
画廊展示效果 ZoomOutPagerTransformer
vp.setPageTransformer(false,new CubePageTransformer());
3.它的相关方法
①:.setAdapter(PagerAdapter adapter)
②:setCurrentItem(int item) 设置显示页面
③:setOffscreenPageLimit(int limit) 设置缓存个数
④:addOnPageChangeListener(OnPageChangeListener listener) 设置页面切换监听
并重写
onPageScrolled(int position, float positionOffset, int positionOffsetPixels):这个方法滑动过程中一直被调用。
onPageSelected(int position):滑动到的页面的索引。该方法是页面被选中或者滑动了足够距离时手指抬起时调用。
onPageScrollStateChanged(int state): 这个state有三个值,当手指按下时为1,滑动为2,抬起后为0,即使滑动很小也会是1- >2->0,就是调用了三次这个函数。如果没有滑动直接点击则是1->0,则是调用了两次这个函数。当调用setCurrentItem翻页时则是1->0,调用了两次这个函数。
⑤:setOnScrollChangeListener(OnScrollChangeListener listener) 设置页面滑动监听


https://www.xamrdz.com/web/2hg1939906.html

相关文章: