• 图片的友好显示方式


      在各类Android应用中图片的的显示是很常见的,如何做到友好的显示方式呢?最近在写一个资讯类app,就碰到了如何“优雅”的显示图片的问题。参考了几个现有了app,最终实现了还算满意的效果。在这里小计一下,主要涉及到图片的全屏显示,半透明背景的设置。

    一、参考样例

      在这给出我参考的几个觉得很不错的例子,博采众长嘛 (*^-^*)

    • 知乎

    加载中

    • 小米相册

      可以看出他们的实现都是类似的,在显示图片是其他内容都是被隐藏或淡化的(好像这句话是什么都没说的废话,图片显示当然该这样 (′д` )…彡…彡),从上面的显示效果我们可以得到两个结论:

    1. 图片需要全屏显示
    2. 需要淡化或者隐藏图片外的内容

    相比于彻底隐藏背景我更倾向于淡化背景,下面就来说说如何实现一个类似于知乎的图片查看界面。

    二、实现

      又两种实现思路可以实现上面的样子:

    1. 使用activity实现
    2. 使用DialogFragment实现

      每种实现的布局主要都是一个显示图片的view,在我的应用中还包括一个下载图片到手机的按钮,大致界面就可知乎类似。相比于activity切换代价,我选择了DialogFragment的实现方式。

    给出布局文件:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

      <!--显示图片的ImageView--> <ImageView android:id="@+id/image" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:scaleType="centerCrop" />

      <!--图片为加载上来时显示的进度条,这里的位置和ImageView是相同的--> <ProgressBar android:id="@+id/progress" style="@style/MDProgressBar" android:layout_width="48dp" android:layout_height="48dp" android:layout_centerHorizontal="true" android:layout_centerVertical="true" />
      <!--提供下载的按钮--> <android.support.design.widget.FloatingActionButton android:id="@+id/fab_save" android:layout_width="64dp" android:layout_height="64dp" android:layout_alignParentBottom="true" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_margin="16dp" android:src="@android:drawable/stat_sys_download" /> </RelativeLayout>

    关于DialogFragment的使用就不赘述了,这里先给出效果:

      (嗯!妹子还不错)这明显不是我想要的效果了,既没有全屏又没有背景淡化(那一堆白色背景),问题出在哪呢?

    1. 没有指定DialogFragment为全屏
    2. 没指定透明背景

      哪在那实现呢?style呗!查了一些Guide发现DialogFragment有一个方法setStyle(int,int),关于这个方法的具体说明,戳这里(ps:需fan墙)

    那就开始写style呗:

       <!--查看图片的fragment,要求是透明且全屏-->
        <style name="Dialog_Fullscreen">
            <item name="android:windowFullscreen">true</item>
            <item name="android:windowNoTitle">true</item>
        </style>

    设置好style再来看看效果呗:

      嗯,全屏实现了,接下来怎么实现半透明了,并指定在什么颜色下实现半透明,这里就要用到ARGB了,关于ARGB戳这里,Android是支持ARGB颜色的。只要我们把背景指定为想要的ARGB色就行了。(知道解决办法了,代码呼之欲出)

    <!--查看图片的fragment,要求是透明且全屏-->
        <style name="Dialog_Fullscreen">
            <item name="android:windowFullscreen">true</item>
            <item name="android:windowNoTitle">true</item>
            <item name="android:windowIsTranslucent">true</item>
            <item name="android:windowBackground">@color/transparent</item>
        </style>
     
    <!--黑色半透明-->
    <color name="transparent">#e0000000</color>

    再来看看效果:

    OK!到此算是实现好了。

    三、总结

      总结一下:DialogFragment默认不是全屏的,需要自己指定style,然后透明背景可以通过设置ARGB背景来实现,当然也可以直接拿到窗口属性设置alpha值,但两者本质是一样的。

  • 相关阅读:
    如何让aboboo 便携版在citrix下使用(aboboo在IPAD上使用)aboboo苹果版
    旅游攻略:南京南京
    [软件分享]aboboo英语复读机 使用心得
    [计算机故障处理]EXCEL文件双击不能直接打开
    [办公应用]如何制作二Y轴图(excel)
    [办公应用]如何保护我的EXCEL表格结构,不被填表人员随意改动
    [计算机故障]为什么我的手机SD卡一打开就是说“你的磁盘未格式化,现在需要格式化吗”?
    [翻译角]Learn From George, Not Pinocchio(ESLPOD)
    [项目机会]小区内的交通流量监控及展示
    [计算机联网故障]WIFI接入正常,但是上网不正常(两种情况)
  • 原文地址:https://www.cnblogs.com/fallblank/p/5459336.html
Copyright © 2020-2023  润新知