Fragement(2)/屏幕适配

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之间通信方法步骤

  1. 在fragment中创建实例方法或实例变量
  2. 在activity中动态加载AFragment时,调用add方法,tag是这个Fragment的名字,可自定义
  3. 在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">800dpdimen>
  • 在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的布局文件
  • 在哪个屏幕就会加载相对应的布局

你可能感兴趣的:(Fragement(2)/屏幕适配)