美文网首页
自定义控件历程记录

自定义控件历程记录

作者: 兔子是黑老大 | 来源:发表于2017-08-14 19:15 被阅读0次
    • 使用配置文件

      • 创建assets文件夹下的配置文件,采用键值对的方式进行存储
        *读取的时候使用
        InputStream config = this.getAssets().open("appConfig");
        Properties properties = new Properties();
        properties.load(config);
        String server  = properties.getProperty("server");
        
    • 快捷键总结

      • 大小写切换(Android Studio)
        CTRL+SHIFT+U
    • Paint效果

      • 边缘模糊效果
      /**
        * radius很容易理解,值越大我们的阴影越扩散
        * SOLID,其效果就是在图像的Alpha边界外产生一层与Paint颜色一致的阴影效果而不影响图像本身
        * NORMAL会将整个图像模糊掉
        * OUTER会在Alpha边界外产生一层阴影且会将原本的图像变透明
        * INNER则会在图像内部产生模糊
        */
       mPaint.setMaskFilter(new BlurMaskFilter(20, BlurMaskFilter.Blur.SOLID));
      //浮雕效果
      EmbossMaskFilter emboss=new EmbossMaskFilter(direction,light,specular,blur);
      myPaint.setMaskFilter(emboss);
      
    • 在绘制椭圆和圆弧的时候要使用RectF来控制,因为这个是在API11的时候加入的,而直接将Recf
      的参数直接写在canvas的draw方法是在API21加入的

    • canvas.drawArc和canvas.drawCircle的开始点在最右边的点坐标为(CENTER * 2,CENTER)
      其中CENTER是圆心

    • 获取一个字符串所占的像素数
      float digitalPe = mTextPaint.measureText(yourString);

    • 对Path的使用,结合PathMesure和ValueAnimator实现线条的动态流畅绘制
      例子:绘制一个圆形

      mPath = new Path();
      mPath.addCircle(mCenterX, mCenterX, mRadius - 40, Path.Direction.CW);
      
      mPathMeasure = new PathMeasure(mPath, false);
      
      mDestPath = new Path();
      mDestPath.lineTo(0, 0);
      
      mPathMeasure.getSegment(0, mCircleParcent * mPathMeasure.getLength(), mDestPath, true);
      canvas.drawPath(mDestPath, mPaint);
      
      @Override
      public void onAnimationUpdate(ValueAnimator animation) {
         mCircleParcent = (float) animation.getAnimatedValue();
      }
      
    • 注意:在使用PathMessure的时候,如果系统版本低于4.4,(KAKIT),那么需要首先需要加上
      mDestPath.lineTo(0, 0);否则是画不出来的

    • 对于画笔Paint
      在创建的时候尽可能的开启这些选项

      paint.setAntiAlias(true);
      paint.setDither(true);
      paint.setFilterBitmap(true);
      

      这些会使你绘出来的图更好看,这个好看是指像素上的好看

    • onMeasure的模板代码

       private int widthMeasure(int widthMeasureSpec) {
            int size = MeasureSpec.getSize(widthMeasureSpec);
            int mode = MeasureSpec.getMode(widthMeasureSpec);
            switch (mode) {
                case MeasureSpec.AT_MOST:
                    return Math.min(mViewWidth,mViewHeight);
                default:
                    return size;
            }
      
         }
      
    • 创建gif图的步骤(不可使用虚拟机,因为我发现我使用的虚拟机几乎都失败了)

      • 使用Android studio的录屏功能 路径 Android monitor -> 左边的录屏按钮
        如果你的不能的话请使用真机,虚拟机即使可以使用你也会发现会瞬间失败
      • 使用PS的导入功能将视频文件导入 File -> 导入 -> 视频帧到图层
      • 对视频进行截取 (ctrl + alt + l)
      • 选择图像,修改图像的大小
      • 选择窗口 -> 时间轴,按Shift选择第一个和最后一个
      • 选择 File -> 存储为Web所用格式
      • 保存就好了

    相关文章

      网友评论

          本文标题:自定义控件历程记录

          本文链接:https://www.haomeiwen.com/subject/mgqprxtx.html