什么样收获view的大大小小

 

关切一下,越多杰出等着您!

重重初学者都会犯一个荒唐 ,就是在onCreate或者onStart里面去得到view的尺寸,但是那样获取到的宽MTK常都是0,为啥呢?因为view的测量进程和activity的生命周期不是同台的,由此不能有限接济实施了onCreate、onStart、onResume的时候view已经测量已毕。若是还没测量完,那么获取到的宽高就会是0。

 Bigjpg,使用开源waifu2x人工智能深度卷积神经网络(CNN)智能无损免费放大图片,可放大4K级超高清分辨率(4000×4000)图片,最大32倍放大,效果秒杀PhotoZoom放大。

那就是说大家应该在哪里获得view的深浅呢?以下有二种艺术:

 那款在线工具使用新型开源人工智能深度学习技术——深度卷积神经网络。它会将噪点和锯齿的一些开展补充,完毕图片的无损放大。

1、在onWindowFocusChanged里面获取。

选拔其余的放大方法如PS或PhotoZoom,放大的图样后依旧有拨云见日的模糊感,边缘的重影以及噪点。那款产品的工作规律,是透过神经网络,针对放大图片的线条、颜色、网点等风味,做特其余算法调整,所以推广效应万分精粹,
色彩保留较好,
图片边缘也不会有毛刺和重影,。更主要的是,影响画质的噪点基本在加大的图形上看不出来。

其一措施是当Activity的窗口失去主旨或者取得关节的时候就会调用,比如举行onResume或者onPause的时候,它就会被调用(因而它有可能被反复调用)。大家可以用下边的模板来收获view的宽高。

动漫、插画图纸的加大大约可以说是无微不至的。将小图片放大后,无论是色彩、细节、边缘,效果都很美好。同时也同盟普通的肖像放大。

public void onWindowFocusChanged(boolean hasFocus)
{
    super.onWindowFocusChanged(hasFocus);
    if(hasFocus)
    {
      int width=view.getMeasuredWidth();
      int height=view.getMeasuredHeight();
    }
}

 网站界面分外不难,接纳打开文件,免费版的三次只好同时上传2张图片。

 

点击“开首”,弹出提醒框进行推广设置,按照原图的品类选用图片类型、放大倍数和降噪程度。

2、使用view.post(runnable).

图表处理完成后,会在图片上浮现“已形成”,点击“下载”按钮,就足以下载到推广后的图形了。

经过这一个措施可以把一个runnable任务投递到音讯队列的尾巴。在该措施里面,会先拿走view所在线程的handler(view所在的线程当然就是UI线程),然后将职责投递到handler所对应的音信队列的底部,等待looper去赢得,当looper获取到的时候,view已经初步化落成,所以就能科学的得到它的宽高了。代码模板如下:

那款在线工具一般的应用是免费的,只是稍有限定。说是免费版一个月放大20张,但是事实上并未界定的,同时上传数也是可以通过重新打开网站来破。

protected void onStart()
    {
        super.onStart();
        view.post(new Runnable(){
            @Override
            public void run() {
                int width=view.getMeasuredWidth();
                int height=view.getMeasuredHeight();
            }
        });
    }

这么良心的网站,有标准化和有须求的可以买入会员帮助下。

3、使用ViewTreeObserver

照片4倍放大效应:

ViewTreeObserve有过多回调接口,比如OnGlobalLayoutListener那个接口,当view树的图景发生变更的时候,或者view树内部view的可知性暴发变动的时候,该接口里面的onGlobalLayout方法将被回调,可以在那几个时候得到view的宽高。由此该办法或者会被一再调用,大家相应在获取到view的宽高之后把该接口监听移除。代码模板如下:

动漫4倍放大效用:

@Override
    protected void onStart() {
        super.onStart();
        ViewTreeObserver observer=view.getViewTreeObserver();
        observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                view.getViewTreeObserver().removeOnGlobalLayoutListener(this);
                int width=view.getMeasuredWidth();
                int height=view.getMeasuredHeight();
            }
        });
    }

 

网址:http://www.bigjpg.com/

如上便是获取view大小的两种常用的章程。