精华内容
下载资源
问答
  • 游戏建模用什么软件

    千次阅读 2019-04-04 20:50:33
    建模软件以及教程 链接:https://pan.baidu.com/s/1g2JtiObLfskiTecWwbY3uA 提取码:nadq Maya 1、三维动画制作。maya平台适用于团队。 2、电影级别特效制作。huodiniFX。 3、场景搭建。max、vue出效果快。 4、...

    游戏建模用什么软件
    Maya基础到精通案例教程集:传送门
    zbrush基础到精通案例教程集:传送门
    3dmax基础到精通案例教程集:传送门
    3D建模软件安装下载集:传送门
    一起白嫖[鼓掌]Q /裙:2/0/4/5/4/9/7/2/5里面有各种软件,游戏 动漫模型源文件,手办源文件,建模教程,等等
    更多视频教程关注:工重浩:3D建模教程
    专注3D建模视频教程软件资料分享
    Maya

    1、三维动画制作。maya平台适用于团队。

    2、电影级别特效制作。huodini做FX。

    3、场景搭建。max、vue出效果快。

    4、广告栏目包装、动态图形设计、创意短片。C4D动态图形模块操作直观明了。

    A、公司团队制作。maya、huodini。

    B、工作室。C4D、max。
    在这里插入图片描述
    游戏建模必学软件,不学你就out了
    因为成本、技术积累、工作效率等客观因素,现在很难说用一两个软件干完一个项目的了。随着你参与项目的数量,所涉及流程的覆盖度增加,很多东西是要交叉使用的。什么max建粗模、zbrush雕高模、maya展UV、max骨骼蒙皮、maya调动作、什么灯光材质渲染的各种用法……还有就是行业的技术革命,可能会颠覆之前的流程。

    不要纠结于你要学习那一款软件,如果你一直深耕在这个行业,并且有上进心。那些软件、插件、脚本语言,早晚有一天都是你要面对的。大部分可能学习一下流程就行,有的则会因为兴趣或工作而深入研究。CG,计算机图形学。这东西学到后期你甚至要懂程序算法,什么程序贴图的艺术,什么脚本优化。有人说每个优秀的CG艺术家,同时也是半个程序猿。励志做一个真正的八角大触吧哈哈哈哈~在这里插入图片描述

    建模好不好学

    很多人都在学校学习的是动画、动漫甚至是其他与影视动画MAYA相关的专业,学校课程也是会讲解到这些课程的,但是对于很多想学好这方面的知识的学生是不够的,又或者是觉得很难,觉得模型渲染动画等都是没有讲解怎样就结束课程,这样就会让学生觉得MAYA学习是很难的,连老师都讲解的只是一些基础学习的。

    然后现在就有这样的内容出现了,要不就是选择放弃自己三维梦想,要不就是去培训学习。这个内容暂时先不说,下一章节会为你讲解到的

    然后就是学校讲解的是中文版学习,出来工作,影视动画公司和游戏公司用到都是英文版,这样就会觉得从事这方面的工作会很有压力的,特别是对于小白,0基础学生出来工作的时候都会觉得放弃,很多公司虽然都是有人带你,但是用的是中文版学习觉得英文版很多都不理解,这个问题也是很严重的。

    最后我了解到就是,我没有美术基础,我怎么能学好呢,我该怎么办去学习呢

    游戏建模必学软件,不学你就out了
    (1)很负责任的告诉你们,很多学校学习,老师讲解的都是基础,对于你想从事这方面的知识是不够的,这是不可以避免的,有很多方法:1、可以在网上搜索教程学习,现在网络这么发达,百度一搜索都是有的,对你去学习MAYA掌握基础还是可以的。2、贴吧询问,有大神可以帮你解答的,3、网络免费课堂学习,更好掌握基础。都是可以的。上手不会很难的。

    (2)英文版的MAYA看起来单词都不懂,但是用到的命令不会很多的,也就那么几个的,我也英文不好的,但是一开始都是用英文版学习,或者比你们好一点就是有人教你入门,但是并不是问题的,因为都是自己摸索入门的。所以一开始用英文版学习或者从中文版转换成英文版都是可以学好的,命令就是在那里,熟悉就记住了在这里插入图片描述

    (3)有没有美术基础,这个虽然是个很关键的问题,但是你想学习,只要自己愿意坚持努力学习,一样也可以学好的,有美术基础学习就是上手快一些,能够学习的很快的,但是没有美术基础,一样是可以学好,也不会需要很长时间的,认真系统学习,半年左右是可以出来从事这方面的工作。

    游戏建模必学软件,不学你就out了
    最后送想学习的MAYA的小伙伴一句话,三维世界道路不好走的,愿意坚持走下去的,一定会达到你想要的。任何东西想要成功都是从不断坚持,不断努力,不断琢磨走过来的,成为成功者的,愿在三维影视动画学习的道路能够越走越远,也希望能帮到你们

    展开全文
  • 这个软件是干什么用的呢?简单来说就是制作声音的,比如,怎么把原唱去掉留下伴奏呢?比如录歌时怎么让自己的声音充满磁性呢?怎么制作方言版动画片呢?请看看吧,看过之后,希望你再谈起音频编辑、audition,可以...
  • 高斯模糊(英语:Gaussian Blur),也叫高斯平滑,是在Adobe Photoshop、GIMP以及Paint.NET等图像处理软件中广泛使用的处理效果,通常它来减少图像噪声以及降低细节层次。这种模糊技术生成的图像,其视觉效果就像...

    什么是高斯模糊?

    高斯模糊(英语:Gaussian Blur),也叫高斯平滑,是在Adobe Photoshop、GIMP以及Paint.NET等图像处理软件中广泛使用的处理效果,通常用它来减少图像噪声以及降低细节层次。这种模糊技术生成的图像,其视觉效果就像是经过一个半透明屏幕在观察图像,这与镜头焦外成像效果散景以及普通照明阴影中的效果都明显不同。

    什么?看不明白?没关系,我也看不明白,维基百科复制回来的嘛。我们直接放一些图片来了解以下这个高斯模糊是怎么样的。因为高斯模糊在iOS中最常见,这里抓了几张iOS网易云的图片:

    可以看到这个界面中的背景,其实就是通过图1中间那个小图片模糊得到的,这样做的好处就是整体性很好,并且不会因为图片过渡突兀而影响界面内容的阅读。

    那么,究竟在Android上怎么去实现这个效果呢?这里推荐使用官方提供在Support Library中的一个工具来做,就是RenderScript。这个RenderScript的功能其实不止有这一个,而其他的一些功能,可以在官方文档中阅读学习,这里不给出。

    使用这个工具的原因其实很简单,就是性能。因为涉及到绘图,所以如果性能不行,那么无论对于高质量图片或者是变化较多的需求都是很吃力的,而这个工具则会充分发挥设备的计算能力(CPU和GPU)来进行计算,并且是使用C99衍生语言进行脚本编写的,相较于Java性能是大大的提升。

    说到这里,有些同学就开始方了,C99衍生?What?这个不需要担心,对于高斯模糊这个实现,Google官方已经给出了对应的解决方案,我们并不需要编写对应的脚本就可以使用了,所以无需担心。

     

    我们把整个问题分为两个部分:①高斯模糊实现;②动态高斯模糊实现

     

    ① 高斯模糊实现

    首先要说明,我们要使用Support Library,所以版本是有要求的:

    • Android SDK Tools 版本必须大于等于22.2
    • Android SDK Build-tools 版本必须大于等于18.1.0

    如果没有达到,请使用SDK Manager升级一下。

    接着创建我们的工程,并且在对应Module(默认创建的是app)的build.gradle文件中加入如下代码:

    defaultConfig {
            ...
            renderscriptTargetApi 18
            renderscriptSupportModeEnabled true
        }

    renderscriptTargetApi:这个一般和App支持的最低版本相同即可。

    package com.fndroid.renderscriptdemo;
    
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.os.Bundle;
    import android.renderscript.Allocation;
    import android.renderscript.Element;
    import android.renderscript.RenderScript;
    import android.renderscript.ScriptIntrinsicBlur;
    import android.support.v7.app.AppCompatActivity;
    import android.widget.ImageView;
    
    public class MainActivity extends AppCompatActivity {
        private ImageView mImageView;
        private Bitmap sampleImg;
        private Bitmap gaussianBlurImg;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            mImageView = (ImageView) findViewById(R.id.iv);
            sampleImg = BitmapFactory.decodeResource(getResources(), R.drawable.icon); // 获取原图
            gaussianBlurImg = blur(sampleImg, 25f);
            mImageView.setImageBitmap(gaussianBlurImg);
        }
    
        private Bitmap blur(Bitmap bitmap,float radius) {
            Bitmap output = Bitmap.createBitmap(bitmap); // 创建输出图片
            RenderScript rs = RenderScript.create(this); // 构建一个RenderScript对象
            ScriptIntrinsicBlur gaussianBlue = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs)); // 创建高斯模糊脚本
            Allocation allIn = Allocation.createFromBitmap(rs, bitmap); // 创建用于输入的脚本类型
            Allocation allOut = Allocation.createFromBitmap(rs, output); // 创建用于输出的脚本类型
            gaussianBlue.setRadius(radius); // 设置模糊半径,范围0f<radius<=25f
            gaussianBlue.setInput(allIn); // 设置输入脚本类型
            gaussianBlue.forEach(allOut); // 执行高斯模糊算法,并将结果填入输出脚本类型中
            allOut.copyTo(output); // 将输出内存编码为Bitmap,图片大小必须注意
            rs.destroy(); // 关闭RenderScript对象,API>=23则使用rs.releaseAllContexts()
            return output;
        }
    }

    这里说明都注释在代码中了。需要了解的是RenderScript有两个版本,分别是:

    • android.renderscript
    • android.support.v8.renderscript

    上面代码使用了第一个,第二个的用法类似,可以自行尝试。

    我们来理一下思路,因为RenderScript是依赖于Script的,而上文也说到了,Script是由C99衍生语言编写,而代码中的ScriptIntrinsicBlur就是对应于高斯模糊算法的脚本。而Allocation对象则是将Java中的对象转换为Script脚本所需类型的帮手,代码中创建了两个Allocation对象分别用来充当输入和输出。接着设置了高斯模糊的半径(radius)。当调用forEach时,脚本会被执行,并且将执行结果填入输出对应的Allocation中,最后调用copyTo来转换为Bitmap对象返回。

    效果图:

     

    ② 动态高斯模糊

    很多时候,我们可能会需要一个图片以不同的模糊程度展现出来。你可能已经注意到上面方法中的模糊半径了,我们可以做一个实验,就是通过一个SeekBar来动态改变这个值看看效果:

    由动图可以看到,我们拖动SeekBar的时候,SeekBar已经跟不上我们的拖动了。这是为什么?原因就是这个渲染工具虽然性能比较优异,但是如果图片的质量和尺寸都较高的时候,我们直接进行修改模糊半径重新渲染的做法往往时不可取的

    这里提出一个解决方案,这个Idea来自于郭大今天的推文作者"湫水长天"。

    做法是,先创建一张模糊的图片加载在ImageView中,接着在这个ImageView的上面再放置一个加载原图ImageView,使用FrameLayout可以让这两个ImageView重叠再一起,接着当我们需要动态改变模糊程度的时候,改变上层的ImageView的BitmapAlpha就可以了。我们先看看效果图:

    使用了这个方法,滑动起来就会比较流畅了。(GIF加载完才是会是正常速度哦)

    这里给一下代码参考吧:

    public class MainActivity extends AppCompatActivity implements SeekBar.OnSeekBarChangeListener {
        private ImageView mImageView;
        private ImageView mImageViewCover;
        private Bitmap sampleImg;
        private Bitmap gaussianBlurImg;
        private SeekBar mSeekBar;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            mImageView = (ImageView) findViewById(R.id.iv);
            mSeekBar = (SeekBar) findViewById(R.id.sb);
            mImageViewCover = (ImageView) findViewById(R.id.iv_cover);
            sampleImg = BitmapFactory.decodeResource(getResources(), R.drawable.icon); // 获取原图
            gaussianBlurImg = blur(sampleImg, 25f);
            mImageView.setImageBitmap(gaussianBlurImg);
            mSeekBar.setOnSeekBarChangeListener(this);
        }
    
        private Bitmap blur(Bitmap bitmap, float radius) {
            Bitmap output = Bitmap.createBitmap(bitmap); // 创建输出图片
            RenderScript rs = RenderScript.create(this); // 构建一个RenderScript对象
            ScriptIntrinsicBlur gaussianBlue = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs)); //
            // 创建高斯模糊脚本
            Allocation allIn = Allocation.createFromBitmap(rs, bitmap); // 开辟输入内存
            Allocation allOut = Allocation.createFromBitmap(rs, output); // 开辟输出内存
            gaussianBlue.setRadius(radius); // 设置模糊半径,范围0f<radius<=25f
            gaussianBlue.setInput(allIn); // 设置输入内存
            gaussianBlue.forEach(allOut); // 模糊编码,并将内存填入输出内存
            allOut.copyTo(output); // 将输出内存编码为Bitmap,图片大小必须注意
            rs.destroy(); // 关闭RenderScript对象,API>=23则使用rs.releaseAllContexts()
            return output;
        }
    
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            int alpha = 255 - progress;
            mImageViewCover.setImageAlpha(alpha);
        }
    
        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
    
        }
    
        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
    
        }
    }

     布局文件:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/activity_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context="com.fndroid.renderscriptdemo.MainActivity">
    
        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">
    
            <ImageView
                android:id="@+id/iv"
                android:layout_width="match_parent"
                android:layout_height="match_parent"/>
    
            <ImageView
                android:id="@+id/iv_cover"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:src="@drawable/icon"/>
    
        </FrameLayout>
    
        <SeekBar
            android:id="@+id/sb"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:max="255"/>
    
    </LinearLayout>

     

    如发现有误,请指出,感谢。

    转载于:https://www.cnblogs.com/Fndroid/p/5734696.html

    展开全文
  • 软件工程教程

    热门讨论 2012-07-06 23:10:29
    用例只描述参与者和系统在交互过程中什么,并不描述怎么例图 关联关系 例图 泛化关系 例图 泛化关系 例图 例图 例图 用例用于什么情况? 不知道什么情况不用用例 如果没有用到用例,...
  • 明天就六一儿童了(放假了),在这里提前祝大家周末快乐,每逢节假日公司必然会推出h5活动页的需求,这次六一儿童节也不例外,产品这次倒是...效果图展示(动态的是LICEcap软件): 全局代码展示: <...

    明天就六一儿童了(放假了),在这里提前祝大家周末快乐,每逢节假日公司必然会推出h5活动页的需求,这次六一儿童节也不例外,产品这次倒是没提什么互动效果需求,只不过根据UI妹子给的设计图,图片与图片中颜色区分过于明显,所以自己感觉还是做全屏滚动效果比较好看,因此在这里做个总结......

     

     方法一:

    效果图展示(动态图用的是LICEcap软件):

     

    全局代码展示:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8"/>
            <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=0" />
            <meta name="format-detection" content="telephone=no" />
            <meta content="yes" name="mobile-web-app-capable">
            <meta content="yes" name="apple-mobile-web-app-capable" />
            <meta http-equiv="Cache-Control" content="no-siteapp" />
            <title>移动端h5活动整页滑屏</title>
            <style type="text/css">
                *{padding:0;margin:0}
                body,html{height:100%;background-color:#fff}
               .wrap{width:100%;height:100%;overflow:hidden}
               .wrap2{width:100%;height:1000%;transition:.3s linear}
               .page{width:100%;height:10%;}
            </style>
        </head>
        <body>
            <div class="wrap" id="wrap">
                <div class="wrap2" id="wrap2">
                    <img class="page" src="img/six01.png"/>
                    <img class="page" src="img/six02.png"/>
                    <img class="page" src="img/six03.png"/>
                    <img class="page" src="img/six04.png"/>
                    <img class="page" src="img/six05.png"/>
                    <img class="page" src="img/six06.png"/>
                    <img class="page" src="img/six07.png"/>
                    <div class="img-eight page">
                        这一块是input框,为了简化代码,易于理解去掉了
                    </div>
                </div>
            </div>
            <script type="text/javascript">
                //重要!禁止移动端滑动的默认事件(这一块是移动端下拉的时候会触发到刷新事件,滑动图片会上不去)
                document.body.addEventListener('touchmove', function(event) {
                    event = event ? event : window.event;
                    if(event.preventDefault) {
                        event.preventDefault()
                    } else {
                        event.returnValue = false
                    }
                }, false)
                var pages = function(obj) {
                    var box = document.getElementById(obj.wrap);
                    var box2 = document.getElementById(obj.wrap2);
                    var len = obj.len;
                    var n = obj.n;
                    var startY, moveY, cliH;
                    //获取屏幕高度
                    var getH = function() {
                        cliH = document.body.clientHeight
                    };
                    getH();
                    window.addEventListener('resize', getH, false);
                    //touchStart
                    var touchstart = function(event) {
                        if(!event.touches.length) {
                            return;
                        }
                        startY = event.touches[0].pageY;
                        moveY = 0;
                    };
                    //touchMove
                    var touchmove = function(event) {
                        if(!event.touches.length) {
                            return;
                        }
                        moveY = event.touches[0].pageY - startY;
                        box2.style.transform = 'translateY(' + (-n * cliH + moveY) + 'px)'; //根据手指的位置移动页面
                    };
                    //touchEnd
                    var touchend = function(event) {
                        //位移小于+-50的不翻页
                        if(moveY < -50) n++;
                        if(moveY > 50) n--;
                        //最后&最前页控制
                        if(n < 0) n = 0;
                        if(n > len - 1) n = len - 1;
                        //重定位
                        box2.style.transform = 'translateY(' + (-n * 10) + '%)'; //根据百分比位置移动页面
                        console.log(n)
                    };
                    //touch事件绑定
                    box.addEventListener("touchstart", function(event) {
                        touchstart(event)
                    }, false);
                    box.addEventListener("touchmove", function(event) {
                        touchmove(event)
                    }, false);
                    box.addEventListener("touchend", function(event) {
                        touchend(event)
                    }, false);
                };
                pages({
                    wrap: 'wrap', //.wrap的id
                    wrap2: 'wrap2', //.wrap2的id
                    len: 8, //一共有几页,这里就是数字几
                    n: 0 //页面一打开默认在第几页?第一页就是0,第二页就是1
                });
            </script>
        </body>
    
    </html>

     

     方法二:

    效果图如下:

     

    整体代码如下:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title>移动端滚屏效果</title>
            <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
            <style type="text/css">
                body,html{
                    width: 100%;
                    height: 100%;
                    margin: 0;
                    padding: 0;
                }
                .g-fullPage{
                    width: 100%;
                    height: 100%;
                    overflow: hidden;
                }
                .g-fullPage div{
                    width: 100%;
                    height: 100%;
                    text-align: center;
                    line-height: 100%;
                    transition: 0.5s ease-in;
                }
                .g-fullPage div:nth-child(1){
                    background-color: #D5F1FD;
                }
                .g-fullPage div:nth-child(2){
                    background-color: aquamarine;
                }
                .g-fullPage div:nth-child(3){
                    background-color: mediumseagreen;
                }
            </style>
        </head>
        <body>
            <div class="g-fullPage">
                <div class="f-pageFirst">1</div>
                <div>2</div>
                <div>3</div>
            </div>
        </body>
        <script type="text/javascript">
            /*
                 mainClass      滑动父容器类名
                 firstClass  第一页的类名
                 num                  总页数
            */
            function fullPage(mainClass, firstClass, num) {
                var startX = 0,                //初始横坐标
                        startY = 0,                //初始纵坐标
                        marginTop = 0,        //上下滑动变量
                        touchNum = 0,            //上滑极限,是否可以上滑
                        touchFlag = true, //可滑动标志 true 可滑动,false 不可滑
                        bodyHeight = document.body.offsetHeight,
                        page = document.getElementsByClassName(mainClass)[0],
                        pageFirst = document.getElementsByClassName(firstClass)[0];
                    
                //获取触摸的初识坐标
                page.addEventListener("touchstart",function(e){
                     e.preventDefault();
                    startX = e.targetTouches[0].clientX;
                    startY = e.targetTouches[0].clientY;
                })
                //重置触摸的坐标值
                page.addEventListener("touchend",function(e){
                     e.preventDefault();
                    startX = 0;
                    startY = 0;
                    touchFlag = true;
                })
                
                //监听并实现 上、下 滑动效果
                page.addEventListener("touchmove",function(e){
                     e.preventDefault();
                    var newX = e.targetTouches[0].clientX,
                            newY = e.targetTouches[0].clientY;
                    if (newY - startY > 50) {
                        if (touchFlag == true && touchNum > 0) {
                            console.log("下滑");
                            touchFlag = false;
                            marginTop += 1;
                            touchNum -= 1;
                            pageFirst.style.marginTop = marginTop * bodyHeight+"px";
                        }
                    } else if (newY - startY < -50) {
                        if (touchFlag == true && marginTop > -num+1) {
                            console.log("上滑");
                            touchFlag = false;
                            marginTop -= 1;
                            touchNum += 1;
                            pageFirst.style.marginTop = marginTop * bodyHeight+"px";
                        }
                    }
                })
            }
            
            fullPage("g-fullPage", "f-pageFirst",3);
        </script>
    </html>

     

    总结:希望上面两种方法对大家有所帮助,最后,祝大家六一快乐啦!

     

    转载于:https://www.cnblogs.com/hejun26/p/10953882.html

    展开全文
  • 高斯模糊(英语:Gaussian Blur),也叫高斯平滑,是在Adobe Photoshop、GIMP以及Paint.NET等图像处理软件中广泛使用的处理效果,通常它来减少图像噪声以及降低细节层次。 高斯模糊给人的感...

    导语:

    用过小米电视的小伙伴都知道,高斯模糊在小米上得到了广泛的运用,比如小米电视的设置界面.那么什么是高斯模糊,怎么样做高斯模糊,这篇文章给你揭晓. ###什么是高斯模糊 高斯模糊(英语:Gaussian Blur),也叫高斯平滑,是在Adobe Photoshop、GIMP以及Paint.NET等图像处理软件中广泛使用的处理效果,通常用它来减少图像噪声以及降低细节层次。

    高斯模糊给人的感觉是一层蒙版,这样的话不会让背景过于单调.

    ###Android中实现高斯模糊的方式 在Adnroid 中,现在常用的图片高斯模糊技术有三种:RenderScript 、fastBlur、对RenderScript和fastBlur的优化.简书上有一篇文章介绍了Android对高斯模糊的实现Android 图片高斯模糊解决方案,这里讲的比较详细,具体原理可以参考这里. ###AndroidTv中如何实现背景的高斯模糊. 在文章首的图片实现了dialog背景的高斯模糊,实现背景的高斯模糊需要以下几个步骤.

    1. 对背景截图
       /**
         * 获取整个窗口的截图
         *
         * @param context
         * @return
         */
        @SuppressLint("NewApi")
        private static Bitmap captureScreen(Activity context) {
            if (view != null){
                //清空缓冲
                view.destroyDrawingCache();
            }
            view = context.getWindow().getDecorView();
    
            view.setDrawingCacheEnabled(true);
            view.buildDrawingCache();
            Bitmap bmp = view.getDrawingCache();
            if (bmp == null) {
                return null;
            }
    
            bmp.setHasAlpha(false);
            bmp.prepareToDraw();
    
            return bmp;
        }
    复制代码
    1. 对截图进行高斯模糊化
    /**
         * 返回高斯模糊的图片效果
         *
         * @param context
         * @param bitmap
         * @param radius
         * @return
         */
        @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
        public static Bitmap blur(Context context, Bitmap bitmap, float radius) {
            // 创建输出图片
            Bitmap output = Bitmap.createBitmap(bitmap);
            // 构建一个RenderScript对象
            RenderScript rs = RenderScript.create(context);
            // 创建高斯模糊脚本
            ScriptIntrinsicBlur gaussianBlue = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));
            // 创建用于输入的脚本类型
            Allocation allIn = Allocation.createFromBitmap(rs, bitmap);
            // 创建用于输出的脚本类型
            Allocation allOut = Allocation.createFromBitmhttps://github.com/songwenju/CustomTvRecyclerView.ap(rs, output);
            // 设置模糊半径,范围0f<radius<=25f
            gaussianBlue.setRadius(radius);
            // 设置输入脚本类型
            gaussianBlue.setInput(allIn);
            // 执行高斯模糊算法,并将结果填入输出脚本类型中
            gaussianBlue.forEach(allOut);
            // 将输出内存编码为Bitmap,图片大小必须注意
            allOut.copyTo(output);
            // 关闭RenderScript对象,API>=23则使用rs.releaseAllContexts()
            rs.destroy();
            return output;
        }
    复制代码
    1. 将bitmap转为drawable并设置给view
     /**
         * 获得背景的高斯模糊图 drawable
         *
         * @param context
         * @param radius
         * @return
         */
        public static Drawable getBackBlurDrawable(Context context, float radius) {
            return new BitmapDrawable(context.getResources(), getBackBlurBitmap(context, radius));
        }
    
    复制代码
      View view = findViewById(R.id.layout_dialog);
      view.setBackground(mBackDrawable);
    复制代码

    这样就对图片做成了高斯模糊.

    动态设置背景

    我写的demo是监听menu键去弹出dialog,在处理逻辑的时候发现截图不变.原来写的截图逻辑是:

    
    /**
        * 获取整个窗口的截图
        *
        * @param context
        * @return
        */
       @SuppressLint("NewApi")
       private static Bitmap captureScreen(Activity context) {
         
           View view = context.getWindow().getDecorView();
    
           view.setDrawingCacheEnabled(true);
           view.buildDrawingCache();
           Bitmap bmp = view.getDrawingCache();
           if (bmp == null) {
               return null;
           }
    
           bmp.setHasAlpha(false);
           bmp.prepareToDraw();
    
           return bmp;
       }
    复制代码

    后来通过查阅资料发现这里需要把上一个view销毁调才可以,添加以下的代码:

     if (view != null){
                //清空缓冲
                view.destroyDrawingCache();
    }
    复制代码

    这样的话就实现了动态的功能,在多个界面设置高斯模糊.

    代码已经上传到github上了CustomTvRecyclerView.


    这篇文章介绍了为view动态设置高斯模糊的背景,希望对你有帮助.

    转载于:https://juejin.im/post/5b714cba51882560fa5eaa3e

    展开全文
  • 最近在探究动作捕捉方面的东西,因为之前学的东西比较杂,整理之后...首先解释一下为什么用Kinect,还有tv3d这么一般人认为过时的东西。首先我的不是商业软件,关键是最简单方法达到目的,质量效率放一放。我个...
  • 因为成本、技术积累、工作效率等客观因素,现在很难说一两个软件干完一个项目的了。随着你参与项目的数量,所涉及流程的覆盖度增加,很多东西是要交叉使用的。什么max建粗模、zbrush雕高模、maya.
  • 通常我们使用原始的爬虫方法IP就会很有可能被禁止访问网页,因此使用动态代理IP来躲避对方的识别系统和软件,从而完成大量的数据采集。 为什么使用代理IP为什么还会被封或限制?一个可能性是:使用高匿.
  • 我是如何原型设计的

    千次阅读 2015-05-12 13:37:15
    当重新开始编程时,我不知道用什么原型设计比较好,用纸画草图比较简单,但演示起来没能让用户有一个动态效果,起初想用UML画一些流程图,这只能说明操作的过程,如何交互并不能反映出来。后来在网上找了一下...
  • 1.问:Photoshop的透明背景GIF图,常常边缘颜色去不干净,特别是动态GIF的边缘,有深色或者白色的小粒清不干净……有什么好方法清除?答:魔棒时不要选消锯齿选项。2.问:为什么屏幕显示和打印出来的效果相差很大...
  • 您现在是不是已经有些急不可耐,马上就要什么呢?是的,WPS 2000 无与伦比的强大功能和巨大的应用潜力远远超出了您的想象。您现在就可以使用您心爱的WPS 2000,在办公室或您的居所任何您想要的工作。...
  • 网管教程 从入门到精通软件篇 ★一。★详细的xp修复控制台命令和用法!!! 放入xp(2000)的光盘,安装时候选R,修复! Windows XP(包括 Windows 2000)的控制台命令是在系统出现一些意外情况下的一种非常有效的...
  • 根据添加时设置的提醒条件到时系统会自动弹出提示窗口,以便及时提醒员工需要处理的任务,此功能的应用大大减少了漏工作的事情发生,将宝贵的资源达到合理安排,充份利用的效果,减少员工冗余记忆的功能。...
  • Axure进阶篇中将会介绍什么是交互,如何玩转Axure中最频繁使用的动态面板部件,做出狂拽炫酷的交互效果。另外,还会介绍母版(主要是触发事件)的使用。交互基础知识开始使用Axure交互之前,我...
  • Axure不仅能制作静态的...Axure进阶篇中将会介绍什么是交互,如何玩转Axure中最频繁使用的动态面板部件,做出狂拽炫酷的交互效果。另外,还会介绍母版(主要是触发事件)的使用。 交互基础知识 开始使用Axure...
  • 不需要一键、二键什么的,拖放到窗口就制作完成,不需要在线制作时的上传并依靠网络畅通,小巧的软件身材,本地使用,想什么时候什么时候。 所有操作一步自动完成,提供以下快速功能: 01、图形处理 - 支持...
  • A: cFos/cFosSpeed 都是多国语言版本, 只不过在安装时 cFosSpeed 会问你要用什么语言来安装. 那着到底 cFos 安装之后, 还能改语言吗? 答案是确定的. 首先进入 cFos 安装目录, 找到其中叫做 cfos.ini 档案, 所有的...
  • asp.net知识库

    2015-06-18 08:45:45
    使用microsoft.web.ui.webcontrols的TabStrip与IFame组件,达到页的切换效果 HttpModule 实现 ASP.Net (*.aspx) 中文简繁体的自动转换,不用修改原有的任何代码,直接部署即可! 服务器自定义开发二之客户端脚本回发 Web...
  • 400个DreamWeaver插件

    2013-03-28 15:30:13
    mxp/看看本页导航栏的效果,这个插件就是这个效果的。修正了测试版中OnMouseOut鼠标事件无效的错误,过渡更平滑。控制参数更丰富 mxp/给选择的文字迅速加上连接。比如选择的文字为microsoft,那么将加上一个到...
  • 在使用动态分配的应用程序中,有时会有这样的情况出现:程序试图读写一块“应该可用”的内存,但不知为什么,这个预料中可用的光标已经失效了。有可能是 “忘记了”向操作系统要求分配,也可能是程序自己在某个时候...
  •  目前的一些高级病毒或木马程序,采用进程插入技术,隐藏了进程,将其DLL动态链接库文件插入现有的系统进程中,常见的插入explorer.exe和winlogon.exe中,目前杀毒软件针对这种动态链接库的病毒查杀,效果都不理想...
  • JAVA核心技术

    2006-02-23 15:31:04
    页面可以的很漂亮,结合echopoint,可以作出很多图形效果(里面了jfreechart包)。使用SWING的思想来作网页,把HTML当作JAVA的类来。但是大量使用Session,页面分帧(Frame)很多,系统资源消耗很大。??免费。?...
  • JavaScript王者归来

    2013-01-10 11:30:48
    3.1 我能用什么来编写脚本--适合编写JavaScript的文本编辑器 3.2 来自浏览器的支持 3.2.1 主流浏览器 3.2.2 非主流浏览器 3.3 集成开发环境 3.3.1 什么是集成开发环境 3.3.2 我需要集成开发环境吗 3.3.3 适合...
  • 2) 客户无须知道他们使用的对象是用什么类来实现的,他们只须知道定义接口的抽象类。 这将极大地减少子系统实现之间的相互依赖关系,也产生了可复用的面向对象设计的如下原则: 针对接口编程,而不是针对实现编程。
  • 3.1.2 DirectSound SDK能做什么 95 3.1.3 如何获取DirectSound SDK 96 3.1.4 DirectSound SDK的基本结构 98 3.1.5 Directsound SDK安装 100 3.1.6 选择最适合用户的DirectSound SDK 100 3.1.7 DirectSound...
  • 调整图像分辨率(DPI):图像分辨率即图像中每单位打印长度显示的像素数目,通常每英寸点数(DPI)表示,使用此软件您可以轻松地修改图片的分辨率,以使打印机打出最好质量的图片。 添加图片的标题(描述):您...
  • GSP5.exe

    2020-04-01 09:16:40
    动画可以非常方便地描画出运动物体的运动轨迹,而且轨迹的生成是动态的、逐步的,表现出轨迹产生的全过程。 [例]制作“同底等高的三角形面积相等”课件 ①作一个三角形ABC; ②依次选中A、B、C三点,利用“作图”...
  • 应用案例 - 用户身份验证 / 英制单位与公制单位互换 / 掷骰子决定做什么 / 百分制成绩转等级制 / 分段函数求值 / 输入三条边的长度如果能构成三角形就计算周长和面积 Day04 - 循环结构 循环结构的应用场景 - ...
  • 捌零后CHM转TXT工具V3.2

    热门讨论 2009-04-16 20:26:14
    4.第二步是把不需要的jpg等文件和目录清除干净,为第三步准备.这步操作很有必要,你可以试试不执行这步看看转出来的效果. 5.第四步是本程序的核心功能---TXT合并,全自动处理! 6.没有其他说的了,这个程序还没完善,...

空空如也

空空如也

1 2 3 4
收藏数 75
精华内容 30
关键字:

做动态效果用什么软件