1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

View repositionieren

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Kritzli, 23.02.2010.

  1. Kritzli, 23.02.2010 #1
    Kritzli

    Kritzli Threadstarter Neuer Benutzer

    Beiträge:
    15
    Erhaltene Danke:
    0
    Registriert seit:
    23.02.2010
    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 !
     

Diese Seite empfehlen