2014-05-06 4 views
2

Я работаю над андроидным приложением, в котором мне нужно реализовать функцию чата. Я смог создать чат-головку, но не смог найти способ, которым я могу добавить кнопку «Перекресток», которая появляется при длинном нажатии и перетаскивании значка. Я хочу знать, что это за значок креста, и как при перетаскивании он может быть наложен на существующий экран так же, как сам чат-голова. Это еще одна чат-голова или что-то еще?Facebook Style Cross Button для удаления чата в android

+0

Акаше вы можете поделиться своим кодом, как вы это реализуете? – jyomin

+0

Привет, Жомин, извините, что требование было прекращено, поэтому на данный момент у меня нет рабочего кода. Вы можете посмотреть комментарии ниже –

ответ

1

Я работаю над SDK Tooleap, который предоставляет приложениям чата для приложений. Я также исследую эту проблему, и кажется, что значок нижнего креста не является главой чата, а прозрачным видом, который занимает всю нижнюю треть экрана (вы можете заметить его по оттенку, который появляется вокруг значка) , Внутри этого вида есть другой вид, который является самой крестной иконой. Поскольку представление прозрачное, голова чата отображается вверху этого представления.

+0

Спасибо за помощь. Я дам создание этого креста. Так будет ли это мнение вызываться после внедрения draglistener? –

+0

Да, вы можете отобразить этот вид в реализации draglistener – Danny

+0

Спасибо .. попробуем, и если он работает, обновите код ... еще раз ping u за помощью –

3
mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE); 

// получить размер экрана, чтобы определить область, откуда вы хотите перетащить и удалить пузырь.

Display display = mWindowManager.getDefaultDisplay(); 
     Point size = new Point(); 
     display.getSize(size); 
     screenWidth = size.x; 
     screenHeight = size.y; 

     LayoutInflater inflater = LayoutInflater.from(this); 
     mChatHead = inflater.inflate(R.layout.chatheaddemo, null); 
     mChatHeadImageView = (ImageView) mChatHead 
       .findViewById(R.id.chathead_imageview); 
     mChatHeadTextView = (TextView) mChatHead 
       .findViewById(R.id.chathead_textview); 
     mLayout = (LinearLayout) mChatHead 
       .findViewById(R.id.chathead_linearlayout); 


     final WindowManager.LayoutParams parameters = new WindowManager.LayoutParams(
       WindowManager.LayoutParams.WRAP_CONTENT, 
       WindowManager.LayoutParams.WRAP_CONTENT, 
       WindowManager.LayoutParams.TYPE_PHONE, 
       WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, 
       PixelFormat.TRANSLUCENT 
     ); 

     parameters.x = 0; 
     parameters.y = 50; 
     parameters.gravity = Gravity.TOP | Gravity.LEFT; 

     // Drag support! 
     mChatHeadImageView.setOnTouchListener(new OnTouchListener() { 

      int initialX, initialY; 
      float initialTouchX, initialTouchY; 

      @Override 
      public boolean onTouch(View v, MotionEvent event) { 

       switch (event.getAction()) { 
       case MotionEvent.ACTION_DOWN: 
        initialX = parameters.x; 
        initialY = parameters.y; 
        initialTouchX = event.getRawX(); 
        initialTouchY = event.getRawY(); 
        mChatHeadTextView.setText("BDCS!!!"); 
        Toast.makeText(getApplication(), 
          "Drag and remove!", Toast.LENGTH_SHORT) 
          .show(); 
        return true; 

       case MotionEvent.ACTION_MOVE: 
        mChatHeadTextView.setVisibility(View.GONE); 
        parameters.x = initialX 
          + (int) (event.getRawX() - initialTouchX); 
        parameters.y = initialY 
          + (int) (event.getRawY() - initialTouchY); 
        mWindowManager.updateViewLayout(mChatHead, parameters); 
        return true; 

       case MotionEvent.ACTION_UP: 

        if (parameters.y > screenHeight * 0.8) { 
         mChatHead.setVisibility(View.GONE); 
         Toast.makeText(getApplication(), "Removed!", 
           Toast.LENGTH_SHORT).show(); 
         stopSelf(); 
        } 

        if (parameters.x < screenWidth/2) { 
         mLayout.removeAllViews(); 
         mLayout.addView(mChatHeadImageView); 
         mLayout.addView(mChatHeadTextView); 
         mChatHeadTextView.setVisibility(View.VISIBLE); 

        } else { // Set textView to left of image 
         mLayout.removeAllViews(); 
         mLayout.addView(mChatHeadTextView); 
         mLayout.addView(mChatHeadImageView); 
         mChatHeadTextView.setVisibility(View.VISIBLE); 
        } 
        return true; 

       default: 
        return false; 
       }`enter code here` 
      } 
     }); 

     mWindowManager.addView(mChatHead, parameters); 

Это удаляет пузырьки после перетаскивания в определенном месте.

+0

Пожалуйста, поделитесь своим chatheaddemo xml также – jyomin