【问题标题】:How to create a Constructor so that i can pass the value如何创建构造函数以便我可以传递值
【发布时间】:2020-05-20 13:19:25
【问题描述】:

如何将浮点值从 Main Activity 传递给其他,或者如何在给定 java 类的位图构造函数上为画布创建构造函数。我想将此值传递或设置为例如:X=40, Y=30 并在 DrawOnCanvas 的覆盖方法中分配它 canvas.drawBitmap(位图,X,Y,空); 我有一个来自 github 的实现需要在这个类中实现这些值:

public class WatermarkFilter extends GlOverlayFilter {

private Bitmap bitmap;
private Position position = Position.LEFT_TOP;
private Canvas canvas;


public WatermarkFilter(Bitmap bitmap) {
    this.bitmap = bitmap;
}


public WatermarkFilter(Bitmap bitmap, Position position) {
    this.bitmap = bitmap;
    this.position = position;
}


@Override
protected void drawCanvas(Canvas canvas) {
    if (bitmap != null && !bitmap.isRecycled()) {
        switch (position) {
            case LEFT_TOP:
                canvas.drawBitmap(bitmap, "X", "Y", null);
                break;     
            case RIGHT_BOTTOM:
                canvas.drawBitmap(bitmap, canvas.getWidth() - bitmap.getWidth(), canvas.getHeight() - bitmap.getHeight(), null);
                break;
        }
    }
}

public enum Position {
    LEFT_TOP,
    LEFT_BOTTOM,
    RIGHT_TOP,
    RIGHT_BOTTOM
}

}

来自我使用此方法的我的 MainClass 方法:

 float X = sticker.getMappedBoundPoints()[0];
   float Y = sticker.getMappedBoundPoints()[1];
    Log.d(TAG, "SavedVideo: " + "X" + X + "?/" + "Y" + Y);
 mp4Composer = new Mp4Composer(inputVideoPath, videoPath)
            .rotation(Rotation.ROTATION_270)
            .size(720, 720)
            .filter(new WatermarkFilter(BitmapFactory.decodeResource(mContext.getResources(),R.drawable.ic_launcher_sample),WatermarkFilter.Position.LEFT_TOP))

【问题讨论】:

    标签: java android android-canvas


    【解决方案1】:

    根据您的问题,我假设您想在 Canvas 方法中设置 X 和 Y 浮点值 如此简单地创建一个像

    这样的构造函数
    public WatermarkFilter(Bitmap bitmap, Float x, Float y) {
        this.bitmap = bitmap;
        X = x;
        Y = y;
     }
    

    并在Override方法中设置:

    @Override
    protected void drawCanvas(Canvas canvas) {
    
        if (bitmap != null && !bitmap.isRecycled()) {
    
           canvas.drawBitmap(bitmap,X,Y,null);
    

    在您的 MainActivity 中:

    filter(new WatermarkFilter(BitmapFactory.decodeResource(mContext.getResources(),R.drawable.ic_launcher_sample),X,Y))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-24
      • 1970-01-01
      • 2021-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多