java的动画功能的实现是最基础的,通过不断刷新图片及其坐标实现动画是java动画的思想,通常这是在线程下完成的。而android的动画可以使用动画类进行,常见的有Property Animation,Tween Animation,Frame Animation,并且由android是从java演化来的,所以android可以使用java的几乎是一切的类以及思想。而libGDX动画的思想与java类似,但是libGDX的刷新是自动进行的,同时作为游戏引擎,他也是动画类最多的。
java的动画可以使用Thread建一个线程,然后让这个线程不断刷新,而线程里面的图片及其图片的坐标也会随着刷新不断更改,这里使用到Graphics.drawImage()进行,因为这个方法在加载图片时会确定坐标。(另外还有使用到,Display,Shell的,这种方式较为罕见,仅作了解)。
而一旦涉及到动画,则一定会涉及到图片,这里使用的是Image抽象类,BufferedImage类,加载到Graphics,在使用Graphics加载到JComponent,这样就可以使用JFrame进行添加显示了。(其实主要设置好JFrame的相关设置,就可以单独显示JFrame了,因为JFrame就是一个窗口,同时JFrame继承自Window)。而加载图片有两种方法,一般使用ImageIO.read()进行,但是还可以使用Toolkit.getDefaultToolkit().getImage()加载。但这里有一个很头疼的问题,那就是使用JComponent进行类创建,在添加到JFrame中,而如果不进行类创建,那么应该怎么进行图片显示还没找到方法。。。。
(图片加载这里注意理清ImageObserver,Component,Container,Window,JComponent,JFrame,JPanel关系)
(Bufferedimage可以实现缩略图,切图Image image=BufferedImage.getScaledInstance(),BufferedImage image=BufferedImage.getSubimage())
(Component.getGraphics()可以得到图片处理类Graphics,而Graphics2D在后面用到)
(使用ImageIcon还可以进行图标设计,即使用Image实例化ImageIcon,淡然还可以使用ImageIcon.getImage()得到Image,而Icon,Image都是抽象类,BufferedImage才是我们一般使用的类。同时还有ToolkitImage等可用类)
(java的View是用于一些控件的相关设计的,android的View由于SurfaceView而被用于自定义控件,应该说两者之间在用途上几乎一样,只是存在于不同系统而已。这里需要明确,加载图片与自定义控件的区别,容易混淆)
对于实现图片的叠加,以及动画的实现,其实还有一个重要的概念,那就是层。将不同的层放置不同的东西,层与层之间叠加就会形成图片图片合成的效果,以及动画在图片上移动的效果。而层的概念的实现在java/android中都是使用布局,也就是Layout概念进行的。不论java还是android都有Layout的存在,但是两者略有不同,这是由于平台的差异造成的。这里Java的布局主要的有BoxLayout,BorderLayout,CardLayout,FlowLayout,GridLayout。而java中布局的父类是LayoutManager(他的子类中还有一个LayoutManager2,注意不要混淆。)
(未完成)