自定义控件历程记录

  • 使用配置文件

    • 创建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所用格式
    • 保存就好了

你可能感兴趣的:(自定义控件历程记录)