2014-01-27 2 views
8

Android screenshotWie mehrere Ansichten zu Window-Managern in Android

Ich entwickle eine Anwendung wie Facebook Chat Heads ein Know-how hinzufügen, um eine einheitliche Sicht auf Window-Manager hinzuzufügen.

Wie fügt man dem Fenstermanager mehrere Ansichten hinzu? Ich habe das Frame-Layout und das relative Layout ausprobiert, aber wie kann ich den Chat-Kopf von einem Ort zu einem anderen verschieben, wenn ich ein relatives Layout verwende?

Für mehrere Ansichten Hinzufügen ich unten Code verwendet:

chatHead = new ImageView(this); 
    chatHead.setImageResource(R.drawable.ic_launcher); 
    TextView t = new TextView(this); 
    t.setText("Blessan Mathew"); 
    t.setBackgroundColor(Color.CYAN); 
    params1 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
    childLayout.addView(t, params1); 

    params1 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
    childLayout.addView(chatHead, params1); 
    fr.addView(childLayout); 

    params = new WindowManager.LayoutParams(
     WindowManager.LayoutParams.WRAP_CONTENT, 
     WindowManager.LayoutParams.WRAP_CONTENT, 
     WindowManager.LayoutParams.TYPE_PHONE, 
     WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, 
     PixelFormat.TRANSLUCENT 
    ); 
    params.gravity = Gravity.TOP | Gravity.LEFT; 
    params.x = 0; 
    params.y = 100; 
    windowManager.addView(fr, params); 

Wie kann ich Chat-Kopf ziehen seine Ansicht zu entfernen?

Antwort

9

Um eine Benachrichtigung oben auf ImageView hinzufügen und beide zusammen die Ansichten bewegen:

Verwenden RelativeLayout als Eltern-Layout und fügen Sie ImageView und TextView zu.

private RelativeLayout parentlayout; 
TextView notification; 

chatHead = new ImageView(this); 
chatHead.setImageResource(R.drawable.deals); 
chatHead.setId(imageid); 
parentlayout = new RelativeLayout(this); 

notification = new TextView(this); 
notification.setTextColor(Color.parseColor("#494949")); 
notification.setText("1"); 
notification.setId(nameid); 
notification.setTextSize(19); 

final RelativeLayout.LayoutParams params_imageview = new RelativeLayout.LayoutParams(
      WindowManager.LayoutParams.WRAP_CONTENT, 
      WindowManager.LayoutParams.WRAP_CONTENT); 

params_imageview.addRule(RelativeLayout.ALIGN_PARENT_LEFT); 

final RelativeLayout.LayoutParams params_name = new RelativeLayout.LayoutParams(
      WindowManager.LayoutParams.WRAP_CONTENT, 
      WindowManager.LayoutParams.WRAP_CONTENT); 

params_name.addRule(RelativeLayout.ALIGN_RIGHT, imageid); 
params_name.addRule(RelativeLayout.ALIGN_TOP, imageid); 

parentlayout.addView(chatHead, params_imageview);// adding user image to view 
parentlayout.addView(notification, params_name); 

schließlich diese Änderungen vornehmen:

mWindowManager.updateViewLayout(parentlayout, params); 

und

mWindowManager.addView(parentlayout, params); 

PS: Verwenden Formen Stil TextView und genaue Benachrichtigung wie die von Facebook bekommen !! :)

+0

ich danke Ihnen für die Antwort .. Wenn ich obigen Code sowohl Textansicht und Bildansicht bewegen, aber ich möchte eine einzelne Ansicht verschieben .. wie im obigen Foto kann ich Chatkopf ziehen, um Bild abzubrechen – rajahsekar

+0

gearbeitet für mich. Nett, danke. –

+0

Ich habe das gleiche Problem! Ich muss die Blase bewegen. Dies passiert jedoch nicht, da das relative Layout das übergeordnete Element für das Bubble-Bild ist. Irgendeine Lösungsmöglichkeit? –