介绍
这期内容当中小编将会给大家带来有关如何在Android项目中自定义相机聚焦,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
public class CameraFocusView extends AppCompatImageView { , ,String TAG =, getClass () . getname (); ,//显示的圆宽显示的位置 ,public float currnetX =, 40; ,public float currentY =, 50; , ,Paint 颜料; ,//半径大小 ,float radis =, 100; ,//透明度 ,int alpha =, 255; ,boolean isAlpha =,假; ,private ValueAnimator  scaleAnimator colorAnimator; , ,public CameraFocusView (Context 上下文),{ ,超级(上下文); ,init (); ,} , ,public CameraFocusView (Context 上下文,@Nullable AttributeSet attrs), { ,超级(上下文,attrs); ,init (); ,} , ,public CameraFocusView (Context 上下文,AttributeSet attrs,, int defStyleAttr), { ,超级(上下文,attrs, defStyleAttr); ,init (); ,} , ,public void  init (), {=,,scaleAnimator  new ValueAnimator (); ,scaleAnimator.setFloatValues (80,, 70,, 90); ,scaleAnimator.setDuration (500); ,scaleAnimator.setInterpolator (new LinearInterpolator ()); ,//伸缩动画效果 ,scaleAnimator.addUpdateListener (new ValueAnimator.AnimatorUpdateListener (), { @Override才能 public 才能;void  onAnimationUpdate (ValueAnimator 动画),{ radis 才能=,(浮动),animation.getAnimatedValue (); 无效才能(); if 才能;(radis ==, 90) { ,,isAlpha =,真的; ,,colorAnimator.start (); ,,} ,,} ,}); ,=,,colorAnimator  new ValueAnimator (); ,colorAnimator.setIntValues (255 0); ,colorAnimator.setDuration (3000); ,colorAnimator.setInterpolator (new LinearInterpolator ()); ,//显示透明度动画效果 ,colorAnimator.addUpdateListener (new ValueAnimator.AnimatorUpdateListener (), { @Override才能 public 才能;void  onAnimationUpdate (ValueAnimator 动画),{ alpha 才能=,(int), animation.getAnimatedValue (); 无效才能(); ,,} ,}); , ,//初始化不显示 ,setVisibility(了); ,} , ,//开始现在圆框 ,public void  startAnimator (), {=,isAlpha 假; ,if (scaleAnimator !=, null), { Log.e才能(标签,,“startAnimator: scaleAnimator !=, null"); setVisibility才能(可见); scaleAnimator.start才能(); ,}else { Log.e才能(标签,,“startAnimator: scaleAnimator ==, null"); ,} ,} , ,@Override ,protected void  onDraw (Canvas 画布),{ ,super.onDraw(画布); ,//画笔设置=,,paint  new 油漆(); ,paint.setStyle (Paint.Style.STROKE);//画笔属性是空心圆 ,paint.setStrokeWidth(2);//设置画笔粗细 ,//抗锯齿 ,paint.setAntiAlias(真正的); ,paint.setColor (Color.WHITE); ,paint.setAlpha (255); ,if (isAlpha) { if 才能;(alpha 祝辞,0,,,,alpha & lt;, 155) { paint.setAlpha才能(155); }才能else if (alpha ==, 0) { setVisibility才能(了); ,,} ,} ,canvas.drawCircle (currnetX,当前y坐标,,x射线检验,,油漆); , ,} }
主界面图
调用方式,点击屏幕就能显示
public class MainActivity extends AppCompatActivity implements SurfaceHolder.Callback, Camera.PreviewCallback { ,String TAG =, getClass () . getname (); ,SurfaceView surfaceview; ,SurfaceHolder surfaceHolder; ,Camera 镜头; ,AutoFocusCallBackClass autoFocusCallBackClass; ,CameraFocusView cameraFocusView; , ,SensorControler sensorControler; , ,int width =, 480; ,int height =, 800; ,int surfaceViewWidth =, 480; ,int surfaceViewHeight =, 800; , ,@Override ,protected void  onCreate (Bundle savedInstanceState), { ,super.onCreate (savedInstanceState); ,setContentView (R.layout.activity_main); , ,ConstraintLayout root =, findViewById (R.id.root); ,=,,surfaceview  findViewById (R.id.surfaceview);=,,surfaceHolder  surfaceview.getHolder (); , ,Display Display =, getWindowManager () .getDefaultDisplay ();=,,width  display.getWidth ();=,,height  display.getHeight (); null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null如何在Android项目中自定义相机聚焦