
我想绘制一个类似于图像的路径.它有两个黑色边框,里面是白色而不是透明.怎么实现呢?尤其是关节位置.
我需要通过单击按钮重绘图片,但在方法无效之后,onDraw 方法未被调用。但是 onDraw 调用仅在运行应用程序后发生。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final Draw draw = new Draw(this);
Button button = (Button) findViewById(R.id.btn);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
draw.setA(40);
draw.setB(300);
draw.invalidate();
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
这是代码 Draw.java
public class Draw extends View {
private Paint mPaint;
private int a;
private int b;
public Draw(Context context) {
super(context);
init();
}
public Draw(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public …Run Code Online (Sandbox Code Playgroud) 我目前正在开发一个基于绘图的项目,我已将值存储为json格式并存储在文件中,但我想通过使用密钥加密json并使用相同的密钥解密json.
使用缩放时,MotionEvent 坐标可以通过除以 ScaleFactor 来校正。
此外,在缩放和平移时,除以比例因子并减去偏移量。
然而,在处理缩放时,就没有那么容易了。除法确实得到了正确的相对坐标,但因为涉及平移,0 不是 0。0 可以是 -2000 的偏移量。
那么如何在缩放和平移后更正 TouchEvents 以提供正确的坐标?
代码:
飞涨:
class Scaler extends ScaleGestureDetector {
public Scaler(Context context, OnScaleGestureListener listener) {
super(context, listener);
}
@Override
public float getScaleFactor() {
return super.getScaleFactor();
}
}
class ScaleListener implements ScaleGestureDetector.OnScaleGestureListener{
@Override
public boolean onScale(ScaleGestureDetector detector) {
scaleFactor *= detector.getScaleFactor();
if(scaleFactor > 2) scaleFactor = 2;
else if(scaleFactor < 0.3f) scaleFactor = 0.3f;
scaleFactor = ((float)((int)(scaleFactor * 100))) / 100;//jitter-protection
scaleMatrix.setScale(scaleFactor, scaleFactor, detector.getFocusX(), detector.getFocusY());
return true;
}
@Override …Run Code Online (Sandbox Code Playgroud)