1. Hast Du Lust, bei uns mitzuarbeiten und das AH-Team zu verstärken? Alle Details zu dieser aktuellen Herausforderung findest Du hier.
  1. Kritzli, 23.02.2010 #1
    Kritzli

    Kritzli Threadstarter Neuer Benutzer

    Also ich habs ja schon angekündigt/gedroht/wasauchimmer. Hier ist eine der ersten von zehntausend Fragen ;)

    Und zwar, bastel ich derzeit ein App, in dem man sich selbst ein Softkeyboard zusammenstellen kann. Dafür hab ich derzeit 2 Activities (A und B). In der Activity A wird die Größe eingestellt und welche Buchstaben auf die Taste sollen. Dann wird die Größe und der Text an Activity B weitergegeben. Dort wird durch Gestures der Button an eine beliebige Stelle des Bildschirms positioniert, z.B. Rechts unten. Danach wird er in eine Arraylist abgespeichert, man kommt zurück zu Activity A und der nächste Knopf kann erstellt werden.

    Dann sollte es so sein, dass wenn ich den nächsten Knopf positionieren will, mir der Alte an seiner Position (Rechts unten) angezeigt wird, und der Neue irgendwo positioniert werden kann.

    Daran scheiterts derzeit aber, denn alle alten Knöpfe werden mir Links oben angezeigt und ich versteh net so ganz warum.
    Denn in der onGesturePerformed - Methode verschiebt er mir den Knopf ja auch an eine beliebige Stelle, warum also nicht, wenn ich ihn aus der Liste auslese ?

    Hab das Ganze mal mit XML - Layout und einmal komplett dynamisch gemacht. Nutzte aber auch nicht wirklich was...

    ok. hier jetzt mal der Code zum Problem/Activity B:
    Code:
    package example.com.fpa;
    
    import java.util.ArrayList;
    import java.util.Iterator;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.gesture.Gesture;
    import android.gesture.GestureLibraries;
    import android.gesture.GestureLibrary;
    import android.gesture.GestureOverlayView;
    import android.gesture.Prediction;
    import android.gesture.GestureOverlayView.OnGesturePerformedListener;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.Gravity;
    import android.view.View;
    import android.view.ViewGroup;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.RelativeLayout;
    import android.widget.Toast;
    import android.widget.RelativeLayout.LayoutParams;
    
    public class keyboard_view_dyna extends Activity implements OnGesturePerformedListener{
    
        protected Button key_button;
        protected GestureLibrary mLibrary;
        protected int position;
        public static ArrayList<Button> keyList = new ArrayList<Button>();
        public Iterator iter;
    
        
                /** Called when the activity is first created. */
                public void onCreate(Bundle savedInstanceState) {
                        super.onCreate(savedInstanceState);
                        
                        
                        final Intent intent = new Intent(this, fpa.class);
                        
                        RelativeLayout rel_layout = new RelativeLayout(this);
                        RelativeLayout.LayoutParams bb = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
                        bb.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
                        bb.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
                        RelativeLayout.LayoutParams fb = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
                        fb.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
                        fb.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
                        RelativeLayout.LayoutParams cb = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
                        cb.addRule(RelativeLayout.CENTER_IN_PARENT);
                        RelativeLayout.LayoutParams ges = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
                        ges.setMargins(0, 0, 0, 50);
    
                        Button back_button = new Button(this);
                        back_button.setText("Zurück");
                        back_button.setWidth(100);
                        back_button.setLayoutParams(bb);
                        rel_layout.addView(back_button);
                       
                        
                        Button accept_button = new Button(this);
                        accept_button.setText("Fertig");
                        accept_button.setWidth(100);
                        accept_button.setLayoutParams(fb);
                        rel_layout.addView(accept_button);
                        
                        key_button = new Button(this); 
                        key_button.setClickable(false);
                        key_button.setLayoutParams(cb);
                        rel_layout.addView(key_button);
                        
                    mLibrary = GestureLibraries.fromRawResource(this, R.raw.gestures);
                    if (!mLibrary.load()) {
                        finish();
                    }
                    
                    GestureOverlayView gestures = new GestureOverlayView(this);
                    gestures.setGestureVisible(true);
                    gestures.setLayoutParams(ges);
                    rel_layout.addView(gestures);
    
                    
                    key_button.setHeight(getIntent().getExtras().getInt("height"));
                    key_button.setWidth(getIntent().getExtras().getInt("width"));
                    key_button.setText(getIntent().getExtras().getCharSequence("letter"));
                  
    
                    
                    back_button.setOnClickListener(new OnClickListener(){
                        public void onClick(View v){
                            //Perform action on clicks
                            
                                intent.putExtra("height", key_button.getHeight());
                                intent.putExtra("width", key_button.getWidth());
                                startActivity(intent);
                        }
                    });
                    
                    accept_button.setOnClickListener(new OnClickListener(){
                        public void onClick(View v){
                            //Perform action on clicks
                            keyList.add(key_button);
                                intent.putExtra("height", key_button.getHeight());
                                intent.putExtra("width", key_button.getWidth());
                                startActivity(intent);
                        }
                    });
                    
                 
                    if(keyList.isEmpty() == false){
                        for (iter = keyList.iterator(); iter.hasNext();){
                            
                            Button k =  (Button) iter.next();
                            Button ok = new Button(this);
    
                            ok.setHeight(k.getHeight());
                            ok.setWidth(k.getWidth());
                            ok.setText(k.getText());
    //               
    //                        Log.i("Button OK", "Height: " + ok.getHeight());
    //                        Log.i("Button OK", "Width: " + ok.getWidth());
    //                        
    //                        
                            ok.layout(k.getLeft(), k.getTop(), k.getRight(), k.getBottom());
                            
                            Log.i("Button OK", "Links: " + ok.getLeft());
                            Log.i("Button OK", "Oben: " + ok.getTop());
                            Log.i("Button OK", "Rechts: " + ok.getRight());
                            Log.i("Button OK", "Unten: " + ok.getBottom());
                            ok.setVisibility(1);
                            
                            rel_layout.removeView(ok);
                        
                            rel_layout.addView(ok);
                            
                            
                            
                        }
                        
                    }
                    this.setContentView(rel_layout);
                    gestures.addOnGesturePerformedListener(this);
             }//endOnCreate
                
                
    
                @Override
                public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) {
                    // TODO Auto-generated method stub
                    ArrayList<Prediction> predictions = mLibrary.recognize(gesture);
                    int width = key_button.getWidth();
                    int display_width = getWindowManager().getDefaultDisplay().getWidth();
                    int start_width = display_width - width;
                    
                    int height = key_button.getHeight();
                    int display_height = getWindowManager().getDefaultDisplay().getHeight();
                    int start_height = display_height - 130 - height;
    //                position = key_button.getLocationInWindow(FOCUSED_STATE_SET);
                    
                    // We want at least one prediction
                    if (predictions.size() > 0) {
                        Prediction prediction = predictions.get(0);
                        // We want at least some confidence in the result
                        if (prediction.name.equals("add_key_left")) {
                            key_button.layout(10, 10, 10 + width, 10 + height);
                            Toast.makeText(keyboard_view_dyna.this, "Ausrichtung: " +  key_button.getLeft() + "Rechts: " + key_button.getRight() + "Oben: " + key_button.getTop() + "Unten: " + key_button.getBottom(), Toast.LENGTH_SHORT).show();
                        }
                        if(prediction.name.equals("add_key_downleft")){
                            key_button.layout(10, start_height, 10 + width, start_height + height);
                            Toast.makeText(keyboard_view_dyna.this, "Ausrichtung: " +  key_button.getLeft() + "Rechts: " + key_button.getRight() + "Oben: " + key_button.getTop() + "Unten: " + key_button.getBottom(), Toast.LENGTH_SHORT).show();
    
                        }
                        
                        if(prediction.name.equals("add_key_right")){
                
                            key_button.layout(start_width, 10, start_width + width , 10 + height);
                            Toast.makeText(keyboard_view_dyna.this, "Ausrichtung: " +  key_button.getLeft() + "Rechts: " + key_button.getRight() + "Oben: " + key_button.getTop() + "Unten: " + key_button.getBottom(), Toast.LENGTH_SHORT).show();
    
                        }
                        if(prediction.name.equals("add_key_downright")){
                            key_button.layout(start_width, start_height, start_width + width, start_height + height);
                            Toast.makeText(keyboard_view_dyna.this, "Ausrichtung: " +  key_button.getLeft() + "Rechts: " + key_button.getRight() + "Oben: " + key_button.getTop() + "Unten: " + key_button.getBottom(), Toast.LENGTH_SHORT).show();
    
                        }
                        
                    }
                }//endGesturePerformed
        
    }
    
    
    Also wenn mir jemand helfen könnte oder Tipps, Hinweise, sonstiges für mich hätte, wäre das echt toll !
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[ERLEDIGT] Komplexe View erstellen Android App Entwicklung 13.09.2017
[RÜCKMELDUNG FEHLT] Text und Bilder in View einbinden Android App Entwicklung 26.03.2017
[ERLEDIGT] View zum selektieren der Wochentage Android App Entwicklung 19.03.2017
Fehlermeldung: Incorrectly called buildLayer on View: ShortcutAndWidgetContainer, destroying layer... Android App Entwicklung 30.01.2017
Viewelemente neu zeichnen Android App Entwicklung 04.01.2017
Du betrachtest das Thema "View repositionieren" im Forum "Android App Entwicklung",