刚刚看了2D动画方面,想到一个问题
android本身提供的动画是 逐帧 和 补间
逐帧是直接播放开始设定好的内容,补间是根据设定的步骤,利用view上本身的东西(背景啊,控件啊之类)形成动画自定义的补间是用matrix控制变化的
我的问题是:
我想实现一个这样的动画,一个listView,显示的时候,从梯形还原成矩形
我觉得,
肯定不能用逐帧,因为需要listView上面的字啊什么的。但是用自定义补间的话,又不能通过matrix把矩形变成梯形无奈求解
android本身提供的动画是 逐帧 和 补间
逐帧是直接播放开始设定好的内容,补间是根据设定的步骤,利用view上本身的东西(背景啊,控件啊之类)形成动画自定义的补间是用matrix控制变化的
我的问题是:
我想实现一个这样的动画,一个listView,显示的时候,从梯形还原成矩形
我觉得,
肯定不能用逐帧,因为需要listView上面的字啊什么的。但是用自定义补间的话,又不能通过matrix把矩形变成梯形无奈求解
解决方案 »
- 关于一个Activity的destroy问题,请大神帮忙下!!!
- 求一个android http上传文件到servlet,tomcat服务器demo,能运行的
- android 滑动
- android中的sound recorder
- 在ViewPager中通过PagerAdapter加载的多个activity怎么能让子activity在当前屏幕数去焦点后调用onpause
- 安卓程序中怎么样把变量中的数据 显示在activity界面上?
- 关于Broadcast接收的问题
- 今天买了个三星note2,有些问题需要请教各位
- 求助大神反编译APK遇到困难
- Android混合开发
- webview放大缩小函数
- android如何实现照片拍照事件的监听
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();
} http://www.ibm.com/developerworks/cn/opensource/os-cn-android-anmt2/index.html?ca=drs-
myListView.buildDrawingCache();
Bitmap bitmap = Bitmap.createBitmap(myListView.getDrawingCache());
myListView.setDrawingCacheEnabled(false);动画的过程是在Bitmap对象上进行的,matrix好像不能矩形变成梯形,动画可以在ondrawn内扫描bitmap重绘时变成梯形,开线程不停postInvalidate()。