zoukankan      html  css  js  c++  java
  • Skia翻页效果的改写感谢何明桂的分享

    何明桂:Android 实现书籍翻页效果----完结篇 http://blog.csdn.net/hmg25/article/details/6342539


    从工作开始接触的就是界面,但只是用GDI画画图片。对于一些复杂的特效,尤其像翻页这样的,感觉很无路。

    看了何明桂的翻页效果原理篇后,发现自己实在是太笨了,无法将表面的现象分析成自己理解的可以实现的代码,只是一直在问怎么办。

    相信很多人看过 原理篇 后,会有同样的感觉。

    原理篇:http://blog.csdn.net/hmg25/article/details/6306479

    星期天将何明桂的java代码 主要是PageWidget.java用C++改写了下

    可以得出上图的效果。

    前些天开始学习用skia,很多不懂,看到何明桂的翻页效果,移植下。

    现在还有好多问题:

    1.小细节,这个怎么点都是从左上角开始翻页。

    2.锯齿很严重

    3.最严重的,估计很难弄 ,阴影的实现,我看了下GradientDrawable这个类在android里是用java实现,不是调用的Skia的C++接口。

      (不知道怎么办,打算用C++照着android里的源码写下,不知道能不能行。)

    希望我能将问题解决掉,与大家分享。

    2011-11-22/09:07:01

    又找到一个翻页效果的例子,http://www.iteye.com/topic/1112526 

    这个用LinearGradient 处理阴影。LinearGradient 继承于Shader.Shader也是native 实现。

    19
    /***
    20
     * Shader is the based class for objects that return horizontal spans of colors
    21
     * during drawing. A subclass of Shader is installed in a Paint calling
    22
     * paint.setShader(shader). After that any object (other than a bitmap) that is
    23
     * drawn with that paint will get its color(s) from the shader.
    24
     */
    

      mypaint.setShader(LinearGradient),

      之后使用mypaint绘画的对象都会使用LinearGradient

     
    2011-11-22/15:00:11
    在所有使用GradientDrawable的地方用SkShader,
    还不会设置CreateLinear的参数,胡来弄了个,效果很差,关键是速度奇慢。不知道会不会悲剧。
    	所有的地方都使用这个SkShader:
         SkPoint pt[2];
    	pt[0].set(0,0);
    	pt[1].set(50,50);
    	SkColor color[] = {0x333333,0xb0333333};
    	mFolderShadowDrawableRL = SkGradientShader::CreateLinear(pt,color,NULL,2,SkShader::TileMode::kClamp_TileMode);
    

      使用如下

    	//mBackShadowDrawable.setBounds(leftx, (int) mBezierStart1.fY, rightx,(int)(mMaxLength + mBezierStart1.fY));
    	//mBackShadowDrawable.draw(canvas);
    改为:
    	SkPaint paint;
    	paint.setShader(mBackShadowDrawable);
    	canvas->drawRectCoords(leftx, (int) mBezierStart1.fY, rightx,(int)(mMaxLength + mBezierStart1.fY),paint);
    

      弱到不行的效果:

    ezhong的博客园:http://www.cnblogs.com/ezhong/

  • 相关阅读:
    poj2954
    bzoj1863
    bzoj2002
    bzoj1389
    [POJ3041] Asteroids(最小点覆盖-匈牙利算法)
    [POJ2594] Treasure Exploration(最小路径覆盖-传递闭包 + 匈牙利算法)
    [POJ2446] Chessboard(二分图最大匹配-匈牙利算法)
    [luoguP1266] 速度限制(spfa)
    [luoguP1186] 玛丽卡(spfa)
    [luoguP1027] Car的旅行路线(Floyd)
  • 原文地址:https://www.cnblogs.com/ezhong/p/2257040.html
Copyright © 2011-2022 走看看