Naar content
Trending apps
  • Google Duo: videogesprekken van hoge kwaliteit

  • Gmail

  • Maps: Navigatie en OV

  • WhatsApp Messenger

  • Messenger: gratis sms'en en videobellen

Trending games
  • Fortnite

  • Minecraft Earth

  • Dr. Mario World

  • Harry Potter: Wizards Unite

  • Breaking Bad: Criminal Elements

Trending smartphones
  • OnePlus Nord N10 5G

  • POCO X3

  • Google Pixel 5

  • Google Pixel 4a

  • OnePlus Nord

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

Wij werken momenteel aan een nieuw forum voor Androidworld. Het is daarom momenteel niet mogelijk om te reageren of nieuwe topics aan te maken.

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

  • 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

  • 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

We werken momenteel hard aan een nieuw forum voor Androidworld. Het is daarom helaas niet mogelijk om op dit topic te reageren.