Naar content
Trending apps
  • Inbox by Gmail

  • Maps: Navigatie en OV

  • WhatsApp Messenger

  • Messenger

  • Facebook

Trending games
  • Dr. Mario World

  • Harry Potter: Wizards Unite

  • Breaking Bad: Criminal Elements

  • The Elder Scrolls: Blades

  • Ghostbusters World

Trending smartphones
  • Microsoft Surface Duo

  • OnePlus 7T Pro

  • Nokia 7.2

  • Xiaomi Mi 9T Pro

  • Samsung Galaxy Note 10 Plus

Nieuwste tablets
  • Samsung Galaxy Tab S6

  • Samsung Galaxy Tab A 10.5

  • Samsung Galaxy Tab S4

  • Samsung Galaxy Tab S3 9.7

  • Asus Zenpad 3S 10

bgApps

bgApps

  • Lid sinds 23 februari 2014
  • Berichten 3
  • Reputatie 0
  • #1
  • 27 februari 2014
  • 23:25

Best Allen,

Ik wil doormiddel van twee pijltjes toetsen een plaatje heen en weer bewegen. Dit heb ik met volgende code weten te bereiken, alleen het gaat absoluut niet vloeiend. Iemand een idee hoe ik het beter kan doen? of wat er beter moet?


public class LevelTwoActivity extends Activity{
	Button mArrowLeft;
	Button mArrowRight;
	ImageView imageView;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.dynamicleveltwo);
		
		imageView = (ImageView)findViewById(R.id.movingcharacters);
		mArrowLeft = (Button) findViewById(R.id.ArrowLeft);
		mArrowRight = (Button) findViewById(R.id.ArrowRight);
		
		mArrowLeft.setOnTouchListener(new View.OnTouchListener() {
			@Override
			public boolean onTouch(View v, MotionEvent event) {
				// TODO Auto-generated method stub
				imageView.setX(imageView.getX()-10);
				return true;
			}
			
		 });
	
		
		mArrowRight.setOnTouchListener(new View.OnTouchListener(){
			@Override
			public boolean onTouch(View v, MotionEvent event) {
				// TODO Auto-generated method stub
				imageView.setX(imageView.getX()+10);
				return true;
		}
						
		 });
	}
	}

Bewerkt (27 februari 2014 23:26)
klwinkel

klwinkel

  • Lid sinds 23 oktober 2010
  • Berichten 951
  • Reputatie 0
  • #2
  • 28 februari 2014
  • 09:29

Op deze manier beweegt je image alleen als je je vinger op de pijltje knop ook beweegt…want dan komt er een ontouch event.

misschien beter de beweging starten op het DOWN event en weer stoppen op het UP event:

in een UIThread ofzo.

switch (event.getAction())
{
case MotionEvent.ACTION_DOWN:
{
// start beweging van de image hier
break;
}

case MotionEvent.ACTION_UP:
{
// stop beweging van de image hier
break;
}
}

bgApps

bgApps

  • Lid sinds 23 februari 2014
  • Berichten 3
  • Reputatie 0
  • #3
  • 1 maart 2014
  • 16:01

Dat was een goed advies. Dit het heeft de volgende code bij mij opgeleverd.

Runnable mAction = new Runnable() {
        @Override public void run() {
        	 imageView.setX(imageView.getX()+10);
             mHandler.postDelayed(this, 10);
         }};});
		
		mArrowLeft.setOnTouchListener(new View.OnTouchListener() {
		    public Handler mHandler;
		    @Override public boolean onTouch(View v, MotionEvent event) {
		        switch(event.getAction()) {
		        case MotionEvent.ACTION_DOWN:
		            if (mHandler != null) return true;
		            mHandler = new Handler();
		            mHandler.postDelayed(mAction, 10);
		         
		            break;
		        case MotionEvent.ACTION_UP:
		            if (mHandler == null) return true;
		            mHandler.removeCallbacks(mAction);
		            mHandler = null;
		            break;
		        }
		        return true;
		    }
		    Runnable mAction = new Runnable() {
		        @Override public void run() {
		        	 imageView.setX(imageView.getX()-10);
		             mHandler.postDelayed(this, 10);
		         }
		        };
		    }
		);

Hiermee loop ik wel tegen het volgende aan. Wanneer ik nu een pijltje “touch” dan begint mijn poppetje te lopen, maar wanneer ik mijn vinger van het pijltje afschuif maar nog wel het scherm blijf aanraken dan blijft mijn poppetje lopen ongeacht dat ik het plaatje niet meer aanraak.

Reageer

Om te reageren, dien je te zijn ingelogd. Druk op de onderstaande knop om in te loggen of maak een nieuwe account aan.

Inloggen Registreren