精华内容
下载资源
问答
  • activity淡入淡出效果以及iphone的切换效果,从左向右滑入效果 自定义activity窗口的实现
  • CSS3/jQuery自定义弹出窗口 多种弹出动画

    千次下载 热门讨论 2014-06-01 21:09:31
    这是一款利用jQuery和CSS3实现的自定义弹出窗口,这可比浏览器默认的弹出窗口漂亮多了...弹出窗口中可以自定义html,十分灵活。另外最重要的一个特点是,它利用了jQuery和CSS3可以实现很多种弹出窗口动画效果,挺酷的。
  • 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、...自定义dialog窗口,根据坐标可随意设置dialog显示位置,实现了窗口弹出动画 Java代码:  package com.sunxu.org.IndividualityDialog;
    原创作品,允许转载,转载时请务必以超链接形式标明文章  原始出处 、作者信息和本声明。否则将追究法律责任。 http://308210.blog.51cto.com/298210/703682

    自定义dialog窗口,根据坐标可随意设置dialog显示位置,实现了窗口弹出动画

    Java代码:

     

    package com.sunxu.org.IndividualityDialog;
    
    import android.app.Activity;
    import android.app.Dialog;
    import android.content.Context;
    import android.os.Bundle;
    import android.view.Gravity;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.Window;
    import android.view.WindowManager;
    import android.widget.Button;
    
    public class IndividualityDialogActivity extends Activity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
            Button btn = (Button)findViewById(R.id.button1);
            
            btn.setOnClickListener(new OnClickListener()
            {
                public void onClick(View v)
                {
                    //多个Activity嵌套时用this.parent否则异常
                    new myDialog(IndividualityDialogActivity.this)
                        .showDialog(R.layout.dialog, 80, 50);
                }
            });
        }
        
        //自定义Dialog
        class myDialog extends Dialog{
            
            private Window window = null;
            
            public myDialog(Context context)
            {
                super(context);
            }
            
            public void showDialog(int layoutResID, int x, int y){
                setContentView(layoutResID);
                
                windowDeploy(x, y);
                
                //设置触摸对话框意外的地方取消对话框
                setCanceledOnTouchOutside(true);
                show();
            }
            
            //设置窗口显示
            public void windowDeploy(int x, int y){
                window = getWindow(); //得到对话框
                window.setWindowAnimations(R.style.dialogWindowAnim); //设置窗口弹出动画
                window.setBackgroundDrawableResource(R.color.vifrification); //设置对话框背景为透明
                WindowManager.LayoutParams wl = window.getAttributes();
                //根据x,y坐标设置窗口需要显示的位置
                wl.x = x; //x小于0左移,大于0右移
                wl.y = y; //y小于0上移,大于0下移  
    //            wl.alpha = 0.6f; //设置透明度
    //            wl.gravity = Gravity.BOTTOM; //设置重力
                window.setAttributes(wl);
            }
        }
    }
     

    设置窗口弹出,退出动画在res/values下创建style

    <?xml version="1.0" encoding="utf-8"?>
    <!-- 设置dialog弹出,退出动画 -->

    <resources>
        <style name="dialogWindowAnim" parent="android:Animation" mce_bogus="1">
            <item name="android:windowEnterAnimation">@anim/dialog_enter_anim</item>
            <item name="android:windowExitAnimation">@anim/dialog_exit_anim</item>
        </style>
        
    </resources>

     

    在res/anim下创建,设置dialog窗口弹出动画

    <?xml version="1.0" encoding="utf-8"?>

    <!-- 弹出时动画 -->
    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <scale 
            android:interpolator="@android:anim/accelerate_interpolator"
            android:fromXScale="1.0"
            android:toXScale="1.0"
            android:fromYScale="0.0"
            android:toYScale="1.0"
            android:pivotX="0%"
            android:pivotY="100%"
            android:fillAfter="false"
            android:duration="400"/>
    </set>

     

    在res/anim下创建,设置dialog窗口退出动画

    <?xml version="1.0" encoding="utf-8"?>
    <!-- 退出时动画效果 -->
    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <scale 
            android:interpolator="@android:anim/accelerate_interpolator"
            android:fromXScale="1.0"
            android:toXScale="1.0"
            android:fromYScale="1.0"
            android:toYScale="0.0"
            android:pivotX="0%"
            android:pivotY="100%"
            android:fillAfter="false"
            android:duration="400"/>
    </set>

     

    在res/values下创建color

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <color name="vifrification">#00000000</color>   <!-- 透明 -->
    </resources>

     

    设置dialog窗口layout

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:gravity="center"
        android:background="@drawable/dialog_background" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="50sp"
            android:text="Hello" />

    </LinearLayout>

     

    main布局

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="点击弹出myDialog" />
    </LinearLayout>

     

    <!-- 
        android:fromXscale="1.0" 表示开始时X轴缩放比例为 1.0 (原图大小 * 1.0 为原图大小)
        android:toXscale="0.0"表示结束时X轴缩放比例为0.0(原图大小 *0.0 为缩小到看不见)
        android:fromYscale="1.0" 表示开始时Y轴缩放比例为 1.0 (原图大小 * 1.0 为原图大小)
        android:toYscale="0.0"表示结束时Y轴缩放比例为0.0(原图大小 *0.0 为缩小的看不到了)
        android:pivotX="50%" X轴缩放的位置为中心点
        android:pivotY="50%" Y轴缩放的位置为中心点
        android:duration="2000" 动画播放时间 这里是2000毫秒也就是2秒
     -->

    本文出自 “sunxu” 博客,请务必保留此出处http://308210.blog.51cto.com/298210/703682

    展开全文
  • 自定义dialog窗口,根据坐标可随意设置dialog显示位置,实现了窗口弹出动画 Java代码: 01.package com.sunxu.org.IndividualityDialog; 02. 03.import android.app.Activity; 04.import android.app....

    自定义dialog窗口,根据坐标可随意设置dialog显示位置,实现了窗口弹出动画

    Java代码:

    01.package com.sunxu.org.IndividualityDialog;  
    02.  
    03.import android.app.Activity;  
    04.import android.app.Dialog;  
    05.import android.content.Context;  
    06.import android.os.Bundle;  
    07.import android.view.Gravity;  
    08.import android.view.View;  
    09.import android.view.View.OnClickListener;  
    10.import android.view.Window;  
    11.import android.view.WindowManager;  
    12.import android.widget.Button;  
    13.  
    14.public class IndividualityDialogActivity extends Activity {  
    15.    /** Called when the activity is first created. */  
    16.    @Override  
    17.    public void onCreate(Bundle savedInstanceState) {  
    18.        super.onCreate(savedInstanceState);  
    19.        setContentView(R.layout.main);  
    20.          
    21.        Button btn = (Button)findViewById(R.id.button1);  
    22.          
    23.        btn.setOnClickListener(new OnClickListener()  
    24.        {  
    25.            public void onClick(View v)  
    26.            {  
    27.                //多个Activity嵌套时用this.parent否则异常   
    28.                new myDialog(IndividualityDialogActivity.this)  
    29.                    .showDialog(R.layout.dialog, 80, 50);  
    30.            }  
    31.        });  
    32.    }  
    33.      
    34.    //自定义Dialog   
    35.    class myDialog extends Dialog{  
    36.          
    37.        private Window window = null;  
    38.          
    39.        public myDialog(Context context)  
    40.        {  
    41.            super(context);  
    42.        }  
    43.          
    44.        public void showDialog(int layoutResID, int x, int y){  
    45.            setContentView(layoutResID);  
    46.              
    47.            windowDeploy(x, y);  
    48.              
    49.            //设置触摸对话框意外的地方取消对话框   
    50.            setCanceledOnTouchOutside(true);  
    51.            show();  
    52.        }  
    53.          
    54.        //设置窗口显示   
    55.        public void windowDeploy(int x, int y){  
    56.            window = getWindow(); //得到对话框   
    57.            window.setWindowAnimations(R.style.dialogWindowAnim); //设置窗口弹出动画   
    58.            window.setBackgroundDrawableResource(R.color.vifrification); //设置对话框背景为透明   
    59.            WindowManager.LayoutParams wl = window.getAttributes();  
    60.            //根据x,y坐标设置窗口需要显示的位置   
    61.            wl.x = x; //x小于0左移,大于0右移   
    62.            wl.y = y; //y小于0上移,大于0下移     
    63.//            wl.alpha = 0.6f; //设置透明度   
    64.//            wl.gravity = Gravity.BOTTOM; //设置重力   
    65.            window.setAttributes(wl);  
    66.        }  
    67.    }  
    68.}  
    69.  


     
    设置窗口弹出,退出动画在res/values下创建style

    <?xml version="1.0" encoding="utf-8"?>
    <!-- 设置dialog弹出,退出动画 -->
    <resources>
        <style name="dialogWindowAnim" parent="android:Animation" mce_bogus="1">
            <item name="android:windowEnterAnimation">@anim/dialog_enter_anim</item>
            <item name="android:windowExitAnimation">@anim/dialog_exit_anim</item>
        </style>
        
    </resources>


     

    在res/anim下创建,设置dialog窗口弹出动画

    <?xml version="1.0" encoding="utf-8"?>
    <!-- 弹出时动画 -->
    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <scale 
            android:interpolator="@android:anim/accelerate_interpolator"
            android:fromXScale="1.0"
            android:toXScale="1.0"
            android:fromYScale="0.0"
            android:toYScale="1.0"
            android:pivotX="0%"
            android:pivotY="100%"
            android:fillAfter="false"
            android:duration="400"/>
    </set>


     

    在res/anim下创建,设置dialog窗口退出动画

    <?xml version="1.0" encoding="utf-8"?>
    <!-- 退出时动画效果 -->
    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <scale 
            android:interpolator="@android:anim/accelerate_interpolator"
            android:fromXScale="1.0"
            android:toXScale="1.0"
            android:fromYScale="1.0"
            android:toYScale="0.0"
            android:pivotX="0%"
            android:pivotY="100%"
            android:fillAfter="false"
            android:duration="400"/>
    </set>

    <!-- 
        android:fromXscale="1.0" 表示开始时X轴缩放比例为 1.0 (原图大小 * 1.0 为原图大小)
        android:toXscale="0.0"表示结束时X轴缩放比例为0.0(原图大小 *0.0 为缩小到看不见)
        android:fromYscale="1.0" 表示开始时Y轴缩放比例为 1.0 (原图大小 * 1.0 为原图大小)
        android:toYscale="0.0"表示结束时Y轴缩放比例为0.0(原图大小 *0.0 为缩小的看不到了)
        android:pivotX="50%" X轴缩放的位置为中心点
        android:pivotY="50%" Y轴缩放的位置为中心点
        android:duration="2000" 动画播放时间 这里是2000毫秒也就是2秒
     -->

     

    在res/values下创建color

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <color name="vifrification">#00000000</color>   <!-- 透明 -->
    </resources>


     

    设置dialog窗口layout

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:gravity="center"
        android:background="@drawable/dialog_background" >
        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="50sp"
            android:text="Hello" />
    </LinearLayout>


     

    main布局

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="点击弹出myDialog" />
    </LinearLayout>


     


    展开全文
  • WPF自定义窗口,保留原生窗口的所有功能,如阴影, 模态闪动,窗口外部拖动改变大小,拖动到屏幕边缘行为,最大最小化动画。使用dock高仿vs2017+vs2019样式。自定义简单画布控件,可移动或缩放,类似ps设计界面。
  • 今天就带大家,一起用Python的PyQt5开发一个有趣的自定义桌面动画挂件,看看实现的动画挂件效果! 下面,我们开始介绍这个自定义桌面动画挂件的制作过程。 一、核心功能设计 总体来说,我们需要实现将自己喜欢的动态...

    前言

    前段时间,写了篇博客关于Python自制一款炫酷音乐播放器。有粉丝问我,音乐播放器为什么要用PyQt5,效果是不是比Tkinter赞?PyQt5真的可以实现这些炫酷的UI画面吗?之前没接触过PyQt5,能不能多分享一些这方面的开发案例?

    今天就带大家,一起用Python的PyQt5开发一个有趣的自定义桌面动画挂件,看看实现的动画挂件效果!
    在这里插入图片描述

    下面,我们开始介绍这个自定义桌面动画挂件的制作过程。

    直接跳到文末获取粉丝专属福利。

    一、核心功能设计

    总体来说,我们需要实现将自己喜欢的动态图gif或者视频转成一个桌面动画挂件,知识点主要包含了对GIF图/视频解析人像提取分割PyQt5窗体设置自定义挂件动画实现ico图标生成程序打包等。

    拆解需求,大致可以整理出我们需要分为以下几步完成:

    1. 对gif或者视频进行逐帧解析,获取转换的图片,提取图像中人体区域,并对图片进行批量尺寸大小修改替换
    2. 初始化设置动画挂件窗体显示效果,窗体位置、大小等
    3. 桌面动画挂件功能实现,动画轮播、鼠标控制挂件位置拖动
    4. 挂件打包图标设置、打包配置

    二、实现步骤

    1. 解析提取,修改图片

    GIF图解析:

    Gif动态图资源大家可以根据自己的喜好,自己选择。博主就用之前写过的仙女蹦迪动态Gif来演示效果。
    在这里插入图片描述

    首先我们需要将Gif动态图按照每一帧进行解析 ,转换成图片格式。代码如下:

    from PIL import Image  # 导入PIL的Image包
    import os
    gifFileName = "./demo.gif"  # 把gif图赋值给gifFileName
    im = Image.open(gifFileName)  # 使用Image的open函数打开test.gif图像
    pngDir = gifFileName[:-4]  # 倒着从gifFileName中的倒数第四个开始取字符(跳过.gif),赋值给pngDir,作为文件夹的名字
    if not os.path.exists(pngDir):
        os.makedirs('./img')  # 用图片名创建一个文件夹,用来存放每帧图片,名字为pngDir的值
    
    try:
      while True:  # 死循环
        current = im.tell()  # 用tell函数保存当前帧图片,赋值给current
        im.save(pngDir+'/'+str(current+1)+'.png')  # 调用save函数保存该帧图片
        im.seek(current+1)  # 调用seek函数获取下一帧图片,参数变为current帧图片+1
        # 这里再次进入循环,当为最后一帧图片时,seek会抛出异常,代码执行except
    except EOFError:
        pass  # 最后一帧时,seek抛出异常,进入这里,pass跳过
    

    这样就可以把动态Gif图转换成图片了,效果如下:

    在这里插入图片描述
    视频解析:

    同理,对视频解析,也是按照每一帧进行解析,转换成图片格式。核心代码如下:

    # 将视频按照每一帧转成图片png
    import cv2
    videoFileName = "./demo.mp4"  # 把视频路径赋值给videoFileName
    pngDir = videoFileName[:-4]  # 倒着从gifFileName中的倒数第四个开始取字符(跳过.后缀),赋值给pngDir,作为文件夹的名字
    if not os.path.exists(pngDir):
        os.makedirs(pngDir)  # 用图片名创建一个文件夹,用来存放每帧图片,名字为pngDir的值
    # 视频处理 分割成一帧帧图片
    cap = cv2.VideoCapture(videoFileName)
    num = 1
    while True:
        # 逐帧读取视频  按顺序保存到本地文件夹
        ret, frame = cap.read()
        if ret:
            cv2.imwrite(f"{pngDir}/{num}.png", frame)  # 保存一帧帧的图片
            num += 1
        else:
            break
    cap.release()   # 释放资源
    

    效果如下:
    在这里插入图片描述
    逐帧提取的图片已经拿到了,下面我们需要对这些图片中的人像进行分割提取。

    人像分割:

    我们调用的是百度开放的人体分析接口百度AI开放平台链接

    在这里插入图片描述
    这里面我们可以创建一个人像分割的应用,其中的API Key及Secret Key后面我们调用人脸识别检测接口时会用到。

    在这里插入图片描述
    我们可以看到官方提供的帮助文档,介绍地很详细。如何调用请求URL数据格式,向API服务地址使用POST发送请求,必须在URL中带上参数access_token,可通过后台的API Key和Secret Key生成。这里面的API Key和Secret Key就是我们上面提到的。
    在这里插入图片描述
    那我们如何获取空背景的人像图片呢?根据API文档,可以看到里面有个type属性设置为foreground 就可以提取空背景的人像图片。

    在这里插入图片描述
    人像分割的接口流程基本就已经清楚了,可以进行代码实现了。

    # 保存图片
    def save_base_image(img_str, filename):
        img_data = base64.b64decode(img_str)
        with open(filename, 'wb') as f:
            f.write(img_data)
    
    # 获取token
    def get_token():
        host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + client_id + '&client_secret=' + client_secret
        request = urllib.request.Request(host)
        request.add_header('Content-Type', 'application/json; charset=UTF-8')
        response = urllib.request.urlopen(request)
        token_content = response.read()
        if token_content:
            token_info = json.loads(token_content)
            token_key = token_info['access_token']
        return token_key
    
    # 人像分割
    def body_seg_fore(filename, resultfilename):
        request_url = "https://aip.baidubce.com/rest/2.0/image-classify/v1/body_seg"
    
        # 二进制方式打开图片文件
        f = open(filename, 'rb')
        img = base64.b64encode(f.read())
    
        params = dict()
        params['image'] = img
        params['type'] = 'foreground'
        params = urllib.parse.urlencode(params).encode("utf-8")
        # params = json.dumps(params).encode('utf-8')
    
        access_token = get_token()
        request_url = request_url + "?access_token=" + access_token
        request = urllib.request.Request(url=request_url, data=params)
        request.add_header('Content-Type', 'application/x-www-form-urlencoded')
        response = urllib.request.urlopen(request)
        content = response.read()
        if content:
            # print(content)
            content = content.decode('utf-8')
            # print(content)
            data = json.loads(content)
            # print(data)
            img_str = data['foreground']
            save_base_image(img_str, resultfilename)
    

    这样我们就可以根据图片,进行人像分割,提取出空背景的人像图。效果如下:

    在这里插入图片描述
    在这里插入图片描述
    如果提取的人像图片大小不符合我们的要求,我们还可以对图片大小进行调整。

    file_list = os.listdir("./image")  # 读取当前文件夹所有文件
    # print(file_list)
    n = len(file_list)
    for i in range(n):
        s = str(file_list[i])
        if s[-4:] == ".png":  # 检查后缀
            src = os.path.join(os.path.abspath('./image/'), s)  # 原先的图片名字
            img = Image.open(src)
            new_img = img.resize((128, 128), Image.BILINEAR)
            new_img.save(src)
    

    我们需要的空背景图片已经拿到了,接下来我们来实现桌面挂件功能。

    2. 初始化动画挂件

    # 窗体初始化
    def windowinit(self):
        self.x = 1650
        self.y = 860
        self.setGeometry(self.x, self.y, 300, 300)
        self.setWindowTitle('My Gadgets')
        self.img_num = 1
        self.img_path = './image/{file}/{img}.png'.format(file=self.dis_file, img=str(self.img_num))
        self.lab = QLabel(self)
        self.qpixmap = QPixmap(self.img_path)
        self.lab.setPixmap(self.qpixmap)
        self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint | Qt.SubWindow)
        self.setAutoFillBackground(False)
        self.setAttribute(Qt.WA_TranslucentBackground, True)
        self.show()
    
    def __init__(self):
        super(Gadgets, self).__init__()
    
        self.dis_file = "img1"
        self.windowinit()
        self.icon_quit()
    
        self.pos_first = self.pos()
        self.img_count = len(os.listdir('./image/{}'.format(self.dis_file)))
    

    这样图片挂件就可以显示出来,效果如下:
    在这里插入图片描述
    现在的桌面挂件是静态显示,下面我们可以通过计时器进行挂件动画轮播显示。

    3. 动画挂件功能实现

    动画轮播:

    self.timer = QTimer()
    self.timer.timeout.connect(self.img_update)
    self.timer.start(100)
    def img_update(self):
        if self.img_num < self.img_count:
            self.img_num += 1
        else:
            self.img_num = 1
        self.img_path = './image/{file}/{img}.png'.format(file=self.dis_file, img=str(self.img_num))
        self.qpixmap = QPixmap(self.img_path)
        self.lab.setPixmap(self.qpixmap)
    

    鼠标控制挂件位置拖动:

    def mousePressEvent(self, QMouseEvent):
        if QMouseEvent.button() == Qt.LeftButton:
            self.pos_first = QMouseEvent.globalPos() - self.pos()
            QMouseEvent.accept()
            self.setCursor(QCursor(Qt.OpenHandCursor))
    
    def mouseMoveEvent(self, QMouseEvent):
        if Qt.LeftButton:
            self.move(QMouseEvent.globalPos() - self.pos_first)
            print(self.pos())
            self.x, self.y = self.pos().x, self.pos().y
            QMouseEvent.accept()
    
    def quit(self):
        self.close()
        sys.exit()
    

    至此,自定义动画挂件功能已经实现完成,动画挂件效果如下:
    在这里插入图片描述

    4. 打包配置

    前段时间有粉丝问我,Python能不能打包成exe?如何打包呢?今天就通过这个来一起介绍下。

    Python常用的打包工具是第三方库Pyinstaller,首先需要安装下pyinstaller。

    pip install Pyinstaller
    

    接下来,我们需要打开命令窗口,切换到项目目录下再执行打包命令。

    pyinstaller -F -i ./img.ico Qt_Gadgets.py
    

    打包常用的参数如下:

    • -F 表示生成单个可执行文件

    • -w 表示去掉控制台窗口,这在GUI界面时非常有用。不过如果是命令行程序的话那就把这个选项删除吧!

    • -p 表示你自己自定义需要加载的类路径,一般情况下用不到

    • -i 表示可执行文件的图标

    之前有小伙伴问我,打包的图标需要.ico后缀的图片,应该如何把普通图片转成图标格式.ico呢?Python当然可以帮你实现,今天就一起教给大家。核心代码如下:

    import PythonMagick
    
    # 生成图标ico(png格式图片转成ico)
    img = PythonMagick.Image('./image/img1/1.png')
    # 这里要设置一下尺寸,不然会报ico尺寸异常错误
    img.sample('128x128')
    img.write('./img.ico')
    

    图标得到了,下面我们就可以进行打包操作了。
    在这里插入图片描述
    打包完成之后,我们可以看见项目目录下会有生成的exe程序。
    在这里插入图片描述
    至此,整个自定义动画挂件就全部完成了,下面我们一起运行下exe看看动画挂件效果。

    在这里插入图片描述

    源码及数据已上传,关注文末公众号回复【源码】即可获取完整源码

    Python往期精彩:

    展开全文
  • AE插件 自定义动画曲线AEscripts flow for Mac是一款After Effects运行的ae插件,提供了25种预定义的常用运动曲线,用于自定义动画曲线,而无需进入混乱的图形编辑器。核心基于Lea Verou,因此您可以自由复制URL...

    AE插件 自定义动画曲线AEscripts flow for Mac

    AE插件 自定义动画曲线AEscripts flow for Mac是一款在After Effects中运行的ae插件,提供了25种预定义的常用运动曲线,用于自定义动画曲线,而无需进入混乱的图形编辑器。核心基于Lea Verou,因此您可以自由复制URL值并将其粘贴到扩展中。本站为大家带来AE插件 自定义动画曲线AEscripts flow for Mac破解版,下载安装即可使用!

    AE插件自定义动画曲线AEscriptsflowforMac

    自定义动画曲线AEscripts flow ae插件介绍

    Flow会在您启动它时改变您使用图形编辑器的方式。AE插件自定义动画曲线AEscriptsflowforMac

    Flow为After Effects提供了一个简单的界面,用于自定义动画曲线,而无需冒险进入老化,混乱的图形编辑器。缓慢,沉重的表情,或与速度和影响力的斗争已经一去不复返了(这些甚至意味着什么?) - 只需做一个曲线,点击APPLY,你就是黄金!

    习惯了网络生活?Flow使用与您熟悉和喜爱的相同的CSS动画 - 计时功能。我们的值直接对应于cubic-bezier(x1,y1,x2,y2)中的值。Flow的核心基于Lea Verou的 cubic-bezier.com,因此您可以自由复制URL值并将其粘贴到扩展中 - Flow将解析它们并将完全相同的转换应用于您选择的关键帧或表达式。

    Flow提供25种预定义的常用运动曲线,基于Robert Penner的Easing Functions。但不要限制自己 - 构建自己的库并与世界分享,或者只需单击一下按钮即可从其他动画师导入自定义预设。查看下面的一些可用包下载!

    我们的图形和库支持键盘快捷键; 在库中,使用Shift / Alt / Ctrl快速设置缓动到缓入/进/出/缓出,或在图形中以不同方式捕捉手柄或对称移动它们。

    AE插件自定义动画曲线AEscriptsflowforMac

    自定义动画曲线AEscripts flow ae插件功能

    易于使用的曲线编辑器 - 单击并拖动手柄以定义曲线的形状。您在此处所做的任何操作都将直接转换为您的动画曲线。

    读取AE中的值将分析当前选定的键并将图形设置为其输入/输出曲线。

    Bezier Points反映了你的两点的位置; 如果您熟悉CSS cubic-bezier()转换,则这些值的工作方式完全相同,并将生成完全相同的曲线。您可以单击此处手动设置或复制这些值。

    保存到库将当前曲线保存到用户库以便以后快速使用。

    作为键或表达式应用 - 不想弄乱你的完美键吗?相反,尝试将曲线应用为表达式。Flow将曲线应用于每对键。

    用于缓出/进/出/在切换中定义是否要使用曲线来放宽按键,按键或两者。

    导入/导出库提供了一种与团队共享动画曲线的简单方法。查看下面可供下载的其他动画曲线包。

    响应式布局 - 宽大,平整,垂直或水平 - Flow的界面可根据任何特定情况进行调整。不想看到图表并且只有图书馆 - 我们已经为您提供了保障。只需滑动分隔线即可隐藏图形并进行设置。

    AE插件自定义动画曲线AEscriptsflowforMac

    系统兼容

    CC 2019,CC 2018,CC 2017,CC 2015.3,CC 2015

    AE插件自定义动画曲线AEscriptsflowforMac

    自定义动画曲线AEscripts flow for Mac破解版安装教程

    下载好“AEscripts flow for Mac”镜像包,双击打开,将左侧的【flow-v1.4.0】拖至右侧extensions文件中安装,如下图。

    (路径:/Library/Application Support/Adobe/CEP/extensions)

    AE插件自定义动画曲线AEscriptsflowforMac

    运行ae软件,选择“1”窗口--->“2”扩展--->“3”flow,如下图。

    AE插件自定义动画曲线AEscriptsflowforMac

    若找不到fiow,请打开终端,把“defaults write com.adobe.CSXS.8 PlayerDebugMode 1”复制粘贴入终端中,摁回车即可,再次运行ae软件即可找到,如下图。

    AE插件自定义动画曲线AEscriptsflowforMac

    展开全文
  • WPF自定义窗口,保留原生窗口的所有功能,如阴影, 模态闪动,窗口外部拖动改变大小,拖动到屏幕边缘行为,最大最小化动画。 使用阿瓦隆dock高仿vs2017+vs2019样式。 自定义简单画布控件,可移动或缩放,类似ps设计...
  • PopupWindow是Android上自定义弹出窗口,使用起来很方便。 PopupWindow的构造函数为 代码如下:public PopupWindow(View contentView, int width, int height, boolean focusable) contentView为要显示的view,...
  • 自定义动画 PDF用于离线使用 下载PDF 示例代码: 自定义动画 相关API: 动画 AnimationExtensions 让我们知道你对此的感受 最后更新:2016年7月 Animation类是所有Xamarin.Forms动画的构建...
  • CSS3/jQuery自定义弹出窗口

    千次阅读 2014-06-01 21:03:46
    简单演示一下,精简了演示效果和css样式文件,更利于项目的实际应用 然后将style.css、index.js和index.html放在同一路径下 用chrome或Firefox打开index.html即可 不支持IE浏览器
  • Extjs动画效果(自定义动画)

    千次阅读 2012-06-18 08:57:35
    Ext Core 通过预置的动画功能,可以让轻松实现动画功能。通过自定义动画配置,可实现更多的动画效果。动画完成后,可通过回调函数实现后续处理 Ext Core 动画 8 个定位点的值与描述值 描述tl 左上角t
  • Unity 自定义编辑器窗口的使用

    千次阅读 2016-10-19 21:57:05
    近期的项目仿照魔兽争霸3开发了一套简单的游戏单位功能组件,其中包括单位数据、移动方式、动画播放、武器系统等等。如果用传统的Inspector来修改各项属性十分不方便,所以实现一个简单直观的自定义编辑器窗口...
  • CustomAlertPopupDEMO项目,我们使用名为CustomFireButton的自定义按钮。 如果要使用相同的按钮-将名称为'CustomFireButton'的文件夹从DEMO项目复制并粘贴到您的项目。 有关更多详细信息。 用法 执照 MIT ...
  • QPropertyAnimation以Qt属性做差值,作为属性值存储QVariants,该类继承自QVariantAnimation,并支持基类相同的元类型动画。 声明属性的类必须是一个QObject,为了能够让属性可以用做动画效果,必须提供一个...
  • Qt 自定义动画按钮(超酷炫)

    千次阅读 2019-06-28 12:46:30
    整体的界面是 一个主 widget 套着3个 widget(微信,支付宝,银行卡) ...二维码窗口 // 二维码窗口 qrcodedialog.h #ifndef QRCODEDIALOG_H #define QRCODEDIALOG_H #include <QDialog> namespace Ui { c...
  • wpf中用用户控件做出来的一个自定义弹出窗口,弹出窗口是用wpf用户控件做出来的,并且是渐显式放大式弹出的动画效果。非常漂亮
  • MBProgressHUD的常用属性和用法: /* 要将一个MBProgressHUD显示出来,1,创建对象;2,将HUD添加到view上;3,调用show方法 隐藏,1,hide:方法;... 其它的用法都是特殊的设置等 */ HUD = [[MB
  • 这个代码是popupwindow进入界面和退出界面时候的一个样例,只有从手机屏幕底部弹出时个的动画,以后我还会有其它的一些效果更新哦,欢迎下载
  • 1. 自定义View动画 这里给出一个模仿QQ客户端的抖一抖特效: 这里窗口抖动的特效代码为: package com.wondertwo.qqTremble; import android.view.animation.Animation; import android.view.animation....
  • 利用动作路径自定义元素对象的位移变化、位置变动、大小缩放、曲线运动等,增强动画视频的画面感、趣味性和形象性。 动画移动路径预览: 万彩手影大师支持轻松自定义元素...2. 弹出的窗口中(强调动作界面),...
  • 使用EasyPopupChild定义您的自定义弹出窗口小部件,并实现dismiss函数,该函数可以完成关闭时需要完成的工作,例如。 显示关闭动画。 class CustomWidget extends StatefulWidget with EasyPopup
  • Android自定义Transition动画

    万次阅读 热门讨论 2016-11-21 00:10:43
    ”, 对于这种说辞, 可以一句话来总结一下”他们还停留4.X之前的时代”. 自从Android5.0推出Material Design设计规范后, Android设计上早已甩那个万年不变的iOS好几十条街!以上纯属个人看法, 请勿开黑
  • WPF 自定义窗口样式有多种方式,不过基本核心实现都是修改 Win32 窗口样式。然而,Windows 上的应用就应该有 Windows 应用的样子嘛,保证自定义的同时也能与其他窗口样式保持一致当然能最大程度保证 Windows ...
  •   用户跟你的app进行交互时,material design动画给予用户动作的反馈和...Material主题提供了一些默认的按钮和activity过渡的动画效果,而Android 5.0(API级别21)或以上的系统版本你可以自定义这些动画,还
  • WP7开发使用自定义的弹出窗口

    千次阅读 2013-07-10 19:55:35
    今天与大家分享一下WP7开发如何使用自定义的弹出窗口,为MessageBox寻找一种替代方案。 两种方法: 1. 使用Coding4Fun提供的MessagePrompt(本人比较推荐这种方法); 2. 自定义UserControl,自己设计窗口布局...
  • 非常好的一篇文章,介绍了Unity下扩展...不过原文很多外链都失效了,而且用的Unity接口有一部分也已经更新了,这篇文章基本是原文的基础上补上失效的图片(自己截的),同时把一些弃用的接口改成新的,2019.1...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 46,403
精华内容 18,561
关键字:

在自定义动画的设置窗口中