美文网首页
适应手机和平板屏幕

适应手机和平板屏幕

作者: LeoFranz | 来源:发表于2019-08-16 10:54 被阅读0次

手机界面加载单个fragment,平板加载两个,列表和内容fragment,是最常见的布局分化情形。

首先要聪明地加载不同的布局文件

解决方案一:
实现一个activity基类,修改传入布局文件方式

setContentView(getLayoutResId());
@LayoutRes
//这个标记表明该方法必须返回有效的布局资源ID
    protected int getLayoutResId() {
        return R.layout.activity_fragment;
    }

通过不同的activity加载不同的布局资源,fragment就通过fragmengManager寻找layout中合适的容器进行加载。

解决方案二:
通过资源修饰符来区分不同屏幕的layout,缺点就是需要复制多份layout资源分别导入不同的文件夹,实际做法就是将不同fragment资源放到不同layout文件中。

解决方案三:使用别名文件
代码中统一引用layoutA,通过values文件夹中的xml配置,根据设备屏幕实际加载不同的layout

values/refs.xml
<item name="activity_masterdetail" type="layout">@layout/activity_fragment</item>
values-sw600dp/refs.xml
<item name="activity_masterdetail" type="layout">@layout/activity_twopane</item>

sw是smallest width的缩写,指高度或者宽度中最小的那个。

这一步做好了,我们需要在代码中适配不同的布局

当同一界面上出现多个的fragment时候,如果采用getActivity.getSupportFragmentManager();再开启事务的方式,可行但需要fragment知道托管activity的实现细节,fragment是一个独立的组件,它没有义务关心其他组件的细节
所以,常见的做法是在fragment中设置回调接口。

public interface Callbacks {
        void onCrimeSelected(Crime crime);
    }
在fragment生命周期中将callback实例化
private Callbacks mCallbacks;
public void onAttach(Context context) {
        super.onAttach(context);
        mCallbacks = (Callbacks) context;
    }
public void onDetach() {
        super.onDetach();
        mCallbacks = null;
    }
托管activity必须实现相应接口,这很正常,activity有义务实现管理者的功能
@Override
    public void onCrimeSelected(Crime crime) {
        if (findViewById(R.id.detail_fragment_container) == null) {
            Intent intent = CrimePagerActivity.newIntent(this, crime.getId());
            startActivity(intent);
        } else {
            Fragment newDetail = CrimeFragment.newInstance(crime.getId());
            getSupportFragmentManager().beginTransaction()
                    .replace(R.id.detail_fragment_container, newDetail)
                    .commit();
        }
    }

核心就是fragment需要与其他组件通信的部分使用接口进行调用。

相关文章

  • Android应用界面开发——Fragment(实现图书详情界面

    Android3.0引入Fragment的初衷是为了适应大屏幕的平板电脑,由于平板电脑的屏幕比手机屏幕更大,因此可...

  • 适应手机和平板屏幕

    手机界面加载单个fragment,平板加载两个,列表和内容fragment,是最常见的布局分化情形。 首先要聪明地...

  • Fragment全解析

    平板电脑和手机最大的区别就是屏幕的大小不同,一般手机屏幕的大小会在3英寸到6英寸之间,而一般平板电脑屏幕的大小会在...

  • HTML5-媒体查询@media

    媒体查询@media 常见的设备类型和宽度超小屏幕 手机 (<768px)小屏幕 平板 (≥768px)中等屏幕 ...

  • 夏普屏,全网通双卡双待,还能吃鸡,国产平板如此努力你知道吗

    如今,我们的手机屏幕变得越来越大,小米科技和华为也都推出了接近7寸屏幕的手机,那么我们还需要屏幕更大的平板吗?所以...

  • CSS3 的 @media

    首先要知道,我们为什么要写自适应的页面(响应式页面) 众所周知,电脑、平板、手机的屏幕是差距很大的,假如在电脑上写...

  • LayaAir屏幕适配

    LayaAir屏幕适配 官方教程链接:LayaAir实战开发11-屏幕适配 屏幕适配 随着移动端设备(手机、平板、...

  • 8.8 Fragment

    概念:Android3.0后引入,初衷是为了适应大屏幕的平板电脑; 可以把屏幕划分成几块进行分组,进行模...

  • 响应式网站实战

    随着互联网技术的发展,网络终端越来越丰富,从最早的桌面设备到现在丰富的桌面+平板+手机端,为了适应各种不同的屏幕,...

  • 玩手机电脑眼睛就一定会坏吗?怎样边玩边保护好眼睛?

    淄博临淄和视眼科 手机屏幕对眼睛的伤害有多大呢?手机,平板等屏幕发出的蓝光能够穿过眼角膜和晶状体,到达视网膜。...

网友评论

      本文标题:适应手机和平板屏幕

      本文链接:https://www.haomeiwen.com/subject/nxxfsctx.html