当前位置: 代码迷 >> Android >> 关于android的一个卡通的实现
  详细解决方案

关于android的一个卡通的实现

热度:96   发布时间:2016-05-01 17:51:06.0
关于android的一个动画的实现
刚刚看了2D动画方面,想到一个问题


android本身提供的动画是 逐帧 和 补间


逐帧是直接播放开始设定好的内容,补间是根据设定的步骤,利用view上本身的东西(背景啊,控件啊之类)形成动画

自定义的补间是用matrix控制变化的


我的问题是:
  我想实现一个这样的动画,一个listView,显示的时候,从梯形还原成矩形


我觉得,
肯定不能用逐帧,因为需要listView上面的字啊什么的。但是用自定义补间的话,又不能通过matrix把矩形变成梯形



无奈求解

------解决方案--------------------
参看一下立体翻页的实现方案呢

Java code
 protected void drawScreen(Canvas canvas, int screen, long drawingTime) {         final int width = getWidth();         final int scrollWidth = screen * width;         final int scrollX = this.getScrollX();          if(scrollWidth > scrollX + width || scrollWidth + width < scrollX) {             return;         }         final View child = getChildAt(screen);         final int faceIndex = screen;         final float faceDegree = currentDegree - faceIndex * preFaceDegree;         if(faceDegree > 90  faceDegree < -90) {             return;         }         final float centerX = (scrollWidth < scrollX)?scrollWidth + width:scrollWidth;         final float centerY = getHeight()/2;         final Camera camera = mCamera;         final Matrix matrix = mMatrix;         canvas.save();         camera.save();         camera.rotateY(-faceDegree);         camera.getMatrix(matrix);         camera.restore();         matrix.preTranslate(-centerX, -centerY);         matrix.postTranslate(centerX, centerY);         canvas.concat(matrix);         drawChild(canvas, child, drawingTime);         child.setBackgroundColor(Color.TRANSPARENT);         canvas.restore();     }
------解决方案--------------------
先把listview变成Bitmap对象
Java code
    myListView.setDrawingCacheEnabled(true);     myListView.buildDrawingCache();    Bitmap bitmap = Bitmap.createBitmap(myListView.getDrawingCache());    myListView.setDrawingCacheEnabled(false);
  相关解决方案