Tag: 动画

在Java中修复动画gif的帧速率

我正在制作一个Java应用程序,显示文件夹中的某些GIF文件。 我目前正在使用该代码 final JLabel imageLabel = new JLabel(); imageLabel.setIcon(new ImageIcon(fileName)); contentPane.add(imageLabel, java.awt.BorderLayout.CENTER); 这完美无缺,除了我的.GIF文件中有很多(数千)具有错误配置的帧速率,这使得它们以无限速度显示(frameDelay = 0),假设浏览器将自动修复此问题。 默认情况下,Java不会这样做。 如何覆盖frameDelay Java必须用于frameDelay = 0的GIF动画?

我需要简单的Android动画示例

请给我简单的Android动画示例和XML。 我是Android的新手,我需要明确的解释。

Java淡入淡出图像

我正在尝试学习如何淡入淡出图像到另一个图像或另一个图像。 因此,如果我有2张图像,此时显示1,我想在背景中显示另一张图像,并将第一张图像淡入第二张图像。 或者,我想将焦点设置在新图像上并在第一张图像上慢慢淡入,然后停止显示第一张图像。 我不确定如何: 即使需要也能设定焦点。 如果我将alpha更改为0并递增并仅绘制一个图像,我可以淡入,但是我无法通过此代码的任何变化使其淡出。 (即评论出一幅图像)。 编辑:真的,我所担心的是能够拥有2张图像并使当前正在显示的图像慢慢消失在第2张图像中。 如何实现这一点并不需要与此相关。 这是我正在搞乱的代码示例: import java.awt.AlphaComposite; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.Timer; public class FadeIn extends JPanel implements ActionListener { private Image imagem; private Image image2; private Timer timer; private float alpha = 1f; public FadeIn() { […]

在java中为快速移动的对象平滑动画

我正在创建一个简单的动画,球从屏幕的一侧移动到另一侧以不同的速度。 问题是,随着球的速度越来越快,我可以看到球的明显闪烁,实际上很难解释,但是当球的一部分还在前一步时,我可以看到重绘的东西。 我尝试了很多东西,包括: 使用第一个线程/ sleep / repain的原生摇摆动画,然后转移到计时器 在swing jframe内切换到javafx canvas / pane。 尝试过渡和AnimationTimer 修补CreateBufferStrategy,1,2,3 – 说实话没有看到任何差异(也许我做错了什么……) 我的问题是如何提高平滑度以及我想用本机java实现的目标是否可能或者使用一些外部库更好? 如果可以的话,你能推荐什么吗? 下面显示了我的第二次/第三次尝试的示例代码。 import java.awt.Dimension; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; import javafx.animation.Interpolator; import javafx.animation.Timeline; import javafx.animation.TranslateTransition; import javafx.application.Platform; import javafx.embed.swing.JFXPanel; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.canvas.Canvas; import javafx.scene.paint.Color; import javafx.scene.shape.Circle; import javafx.util.Duration; import javax.swing.JFrame; public class FXTrackerPanel extends JFrame { […]

Java基础2d游戏动画口吃

所以,我已经有一段时间在一个2d RPG上工作,我似乎无法解决这个问题。 由于未知原因,图形似乎每隔几秒就会“跳跃”或断断续续。 这变得非常烦人,因为我不知道是什么导致它。 这是我写的一个非常基本的程序,它只有一个红色方块,从屏幕的一侧移动到另一侧。 即使在这个非常基本的程序中,广场仍然会断断每一次更新,我真的无法理解我的生活。 public class Main extends JPanel { int x=0, y=0; public JFrame window = new JFrame(“Window”); public Main(){ window.setSize(1000, 500); window.setVisible(true); window.add(this); } public void paintComponent(Graphics g){ super.paintComponent(g); g.setColor(Color.red); g.fillRect(x, y, 500, 500); x+=3; if(x>900){ x=0; } } public void start(){ while(true){ repaint(); try { Thread.sleep(16); } catch (InterruptedException e) […]

如何加快这个摆动动画?

我正在把一个动画画到一个摇摆的JPanel上。 1024×1024屏幕分为2000个部分,完全覆盖屏幕(不重叠)。 每一块都是一小块屏幕(1/2000’)。 动画通过更改缓冲图像中的像素并调用reaint(),每毫秒绘制一个片段。 所以在整个屏幕上每2秒更换一次。 动画在java.util.Timer任务中运行。 缓冲的图像不会加速且不易变。 我将它的优先级设置为1。 框架根窗格已优化。 前后缓冲都是加速但不易变的。 这很好用。 分析表明,几乎所有的grahics时间都是按照人们的预期绘制缓冲图像,使用一些脏矩形似乎不会有助于缩短绘制时间。 如果我使用它的确切形状剪切缓冲图像的绘图,那么该部分将被绘制并且屏幕的其余部分变为白色。 我想要的是让屏幕的其余部分保持原样并且只是将剪裁的形状涂上颜色。 为每个片段制作像素需要混合10层,因此在那里进行了一些计算。 可以/应该在awt计时器线程中做得更好吗? 或者我应该使用canvas和更新技巧http://java.sun.com/products/jfc/tsc/articles/painting/src/UpdateDemo.java 我见过的建议包括Toolkit.getDefaultToolkit()。setDynamicLayout(true); System.setProperty( “sun.awt.noerasebackground”, “真”); 其他建议包括paintimmedialtely,并inheritanceJComponent而不是JPanel。 我发现这有点令人困惑。 我想尽可能保持这个操作系统独立,但该应用程序将主要在Windows 7上运行。 我接下来的下一个(小)逻辑步骤是什么? 更新:使用canvas(没有更新技巧)显着减少了绘制缓冲图像所花费的时间。 而不是这个在探查器的顶线,我找不到它! 当我使用面板时,我可能会比我应该做的更多。

页面转换器的ViewPager页面缩放问题

嗨,我正在开发一个应用程序,我正在使用viewpager使用viewpager变换器进行自定义动画,但问题是viewpager页面转换器存在缩放问题。我尝试了每个可能的x和y缩放,但问题仍然是相同的。 如果有人可以帮助我,我很难理解这个问题。 下面是我想要实现的形象 更新:看起来我还没有找到解决方案,但仍然试图想象,因为我几乎就在那里,刚刚离开了cardstack外观的设计。 我的页面转换代码 public class CardStackTransformer implements ViewPager.PageTransformer { private static final float DEFAULT_CURRENT_PAGE_SCALE = 1.0f; private static final float OTHER_PAGE_SCALE = 0.9f; private int dimen; @Override public void transformPage(@NonNull View view, float position) { //view.setScaleX(DEFAULT_CURRENT_PAGE_SCALE); // view.setScaleY(DEFAULT_CURRENT_PAGE_SCALE); /*dimen = view.getWidth(); int pageWidth = view.getWidth(); final float translateValue = position * -pageWidth; if […]

如何在java中绘制gif动画?

我有一些gif动画图像(见下面的示例图片) 当我用图形对象绘制它们时,我只得到第一个图像, 我知道我可以用JLabel(从其他stackoverflow答案)做到这一点 但我想用图形对象做到这一点, 任何人都可以告诉我 如何绘制整个动画的简单方法?

在Java中创建动画JScrollPane的简单方法?

我目前有一个JScrollPane,它包含基本上是一个项目列表。 此JScrollPane将显示在信息屏幕上。 我正在寻找的是使它以给定的间隔自动滚动到列表底部的某种方式,然后回到顶部。 我认识到使用JScrollPane可能无法实现这一点,因此任何替代方案的建议都会很棒!

图像正在播放动画,图像可以点击

我为图像制作了一个简单的动画,然后在图像上设置事件OnClick以进行祝酒。 问题是我让图像开始在onCreate上做动画,我设置了要点击的图像并触发吐司,但问题是图像不可点击,但如果我按下原始位置图像,吐司启动(onClick不随动画移动) 谢谢你的帮助 这是anim文件夹中的动画代码(translate.xml) 这是活动类 package com.example.animatest; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.ImageView; import android.widget.Toast; public class MainActivity extends Activity { private ImageView image01; private long aefe; private ImageView image1; private ImageView image2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); image01 = (ImageView) findViewById(R.id.imageView1); […]