ViewPager、Fragment页卡切换复习
步骤:
- 创建新的activityA及B,创建两个fragmentM及N
- activityA的视图里面写一个viewpager, java文件里绑定id
创建适配器类Madapter,在activityA中viewpager创建列表,初始化,填充列表/填充数据
创建适配器,适配器实例化
绑定适配器
代码演示
fragmentM=new FragmentM();
fragmentN=new FragmentN();
//填充列表/数据
fragmentList.add(fragmentM);
fragmentList.add(fragmentN);
adapter=new MyPagerAdapter(getSupportFragmentManager(),fragmentList);
viewPager.setAdapter(adapter);//绑定适配器
Fragment生命周期
11个生命周期:
- onAttach
- onCreate
- onCreateView
- onActivityCreated
- onStart
- onResume
- onPause
- onStop
- onDestroyView
- onDestroy
- onDetach
演示反馈
- 开始打开时:onAttach,onCreate,onCreateView,onActivityCreated,onStart,onResume
- 滑动页面切换时,无变化
- 按钮页面切换时,onPause,onStop
- 切换后返回到第一个页面,onStart,onResume
- 按home键,onPause,onStop
- 再次返回应用,onStart,onResume
- 退出应用,onPause,onStop,onDestoryView,onDestory,onDetach
Fragement通信传值
一般采用对象.示例方法名,在fragment里面得到activity对象,然后调用
注意点:当采取局部变量时,取就近原则局部变量
AFragment与BFragment之间通信方法步骤
- 在fragment中创建实例方法或实例变量
- 在activity中动态加载AFragment时,调用add方法,tag是这个Fragment的名字,可自定义
- 在BFragment中通过getActivity().getFragmentManger().findFragmentByTag(tag)方法即可获得对应的Fragment对象,然后调用此Fragment中创建的实例方法或实例变量
方法步骤1(直接显示)
private int a=10;
public void test(){
Toast.makeText(this,"Activity中的方法被调用",Toast.LENGTH_SHORT).show();
}
a2bbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ActivityA activityA= (ActivityA) getActivity();
activityA.test();//用Activity中的对象调用他的方法
}
});
方法步骤2(显示在文字框内)
public void test(String text){
tv.setText(text);
}
a2bbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ActivityA activityA= (ActivityA) getActivity();
activityA.a=20;
activityA.test("world");
}
});
屏幕适配
名词解释
dpi:屏幕像素点数,每英寸的像素点数,决定了分辨率
尺寸单位适配
ldpi:120
mdpi:160
hdpi:240
xhdpi:320
xxhdpi:480
什么是屏幕适配?
- 屏幕大小不一样,做出不同的响应方案,同时也要建不同的包
dpi/dip/dp/sp/px分别是什么?
- dpi:像素密度,dip/dp/sp/px:尺寸单位
dimens是什么?
- dimens是尺寸文件
如何适配文件?
- 不同的尺寸文件放到不同的包里面
如何使字符串国际化?
- 设置不同的values,如英文:values-en,日文:values-ja
如何对布局进行适配?
- 创建不同的文件夹,如layout-large
如何进行屏幕适配?
- 尺寸适配
- 图片适配
- 文字适配
- 布局适配
尺寸适配
- 建两个包:dimens(2000x1600)、dimens
- 放在两个文件夹的尺寸文件全都命名为dimens
- dime.xms代码
<dimen name="app_width">800dp</dimen>
- 在activity中创建一个Button,设置其宽度使用
android:layout_width="@dimen/app_width;
- 分别在正常分辨率、960x540、1184x720分辨率下运行
图片适配
- 将三张图片放到hdpi、mdpi、xdpi,三张图的命名都是anmial.png
- 在布局文件中创建一个ImageView,src属性指向anmial.png
- 运行哪个密度就加载哪个文件夹
文字适配
- 创建两个包values-en、values
- 放在两个包的文件全都命名为strings
- (注意点):每个文件的明明一致,key一致,根据当前文件夹要适配的语言进行翻译即可
布局适配
- 在resxia新增layout-land(竖屏)、layout、layout-large(横屏)、layout-1080x720(特定分辨率)文件夹,分别创建名为activity_main.xml的布局文件
- 在哪个屏幕就会加载相对应的布局