{[RESOLVIDO], [Android]} Como criar Joystick Virtual
3 respostas
landantas
Salve galerinha!
Bem… Estou desenvolvendo um apk android para o controle do PC pelo celular(mouse e teclado)…
A poucos dias baixei um jogo no meu aparelho que tem um Joystick Virtual na tela…(tipo os analogicos como do PS2)…
Além do meu app nao ter nada a ver com jogos(por enquanto)… Eu quero saber se alguem tem algum tutorial de como criar estes “Botões Analogicos Virtuais”…
Galerinha, fiz como o Marky indicou...
Fiz um View na mãozona bruta mesmo e utilizei o metodo onTouch...
Ficou assim:
packagelan.controlador;importandroid.annotation.SuppressLint;importandroid.content.Context;importandroid.graphics.Canvas;importandroid.graphics.Color;importandroid.graphics.Paint;importandroid.graphics.Point;importandroid.util.AttributeSet;importandroid.view.MotionEvent;importandroid.view.View;publicclassJoyextendsView{PointpontoFinal,pontoMeio=null;Paintpaint;intlarg=getWidth();intalt=getHeight();publicJoy(Contextcontext,AttributeSetattrs){super(context,attrs);pontoFinal=newPoint(larg/2,alt/2);iniciarPaint();setarListener();}publicvoidiniciarPaint(){paint=newPaint();paint.setStrokeWidth(2);//Seta a "grossura" do Paint}@SuppressLint("DrawAllocation")@OverrideprotectedvoidonDraw(Canvascanvas){if(pontoMeio==null){larg=getWidth();alt=getHeight();pontoMeio=newPoint(larg/2,alt/2);}paint.setColor(Color.GREEN);//Seta a cor do Paintcanvas.drawRect(10,10,larg-10,alt-10,paint);paint.setColor(Color.RED);//Seta a cor do Paintinttam=15,x=0,y=0;if(pontoFinal.x>0){if(pontoFinal.x>larg){x=larg;}else{x=pontoFinal.x;}}if(pontoFinal.y>0){if(pontoFinal.y>larg){y=larg;}else{y=pontoFinal.y;}}canvas.drawRect(x-tam,y-tam,x+tam,y+tam,paint);super.onDraw(canvas);}publicvoidsetarListener(){setOnTouchListener(newView.OnTouchListener(){@OverridepublicbooleanonTouch(Viewv,MotionEventevent){if(event.getAction()==MotionEvent.ACTION_DOWN){}if(event.getAction()==MotionEvent.ACTION_MOVE){pontoFinal.set((int)event.getX(),(int)event.getY());invalidate();System.err.println("X: "+getxAxis()+" Y: "+getyAxis());}if(event.getAction()==MotionEvent.ACTION_UP){pontoFinal.set(pontoMeio.x,pontoMeio.y);invalidate();}returntrue;}});}publicintgetxAxis(){intret=0;if(pontoFinal.x>0&&pontoFinal.x<larg){ret=pontoFinal.x-pontoMeio.x;}if(pontoFinal.x>larg){ret=larg/2;}if(pontoFinal.x<0){ret=0-(larg/2);}returnret;}publicintgetyAxis(){intret=0;if(pontoFinal.y>0&&pontoFinal.y<alt){ret=pontoFinal.y-pontoMeio.y;}if(pontoFinal.y>alt){ret=alt/2;}if(pontoFinal.y<0){ret=0-(alt/2);}returnret;}}
Espero que possa ajudar a alguém aii...
Ah! Os getxAxis e getyAxis pegam a posição do "joy"...
Depois implementarei-o para alterar a sensibilidade :D