View repositionieren

Kritzli

Kritzli

Neues Mitglied
0
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 !
 

Ähnliche Themen

P
Antworten
0
Aufrufe
557
Pascppal
P
Tiefkuehlpizza
Antworten
2
Aufrufe
958
Tiefkuehlpizza
Tiefkuehlpizza
F
  • Fabicoe
Antworten
1
Aufrufe
920
jogimuc
J
Zurück
Oben Unten