Я работаю над андроидным приложением, в котором мне нужно реализовать функцию чата. Я смог создать чат-головку, но не смог найти способ, которым я могу добавить кнопку «Перекресток», которая появляется при длинном нажатии и перетаскивании значка. Я хочу знать, что это за значок креста, и как при перетаскивании он может быть наложен на существующий экран так же, как сам чат-голова. Это еще одна чат-голова или что-то еще?Facebook Style Cross Button для удаления чата в android
ответ
Я работаю над SDK Tooleap, который предоставляет приложениям чата для приложений. Я также исследую эту проблему, и кажется, что значок нижнего креста не является главой чата, а прозрачным видом, который занимает всю нижнюю треть экрана (вы можете заметить его по оттенку, который появляется вокруг значка) , Внутри этого вида есть другой вид, который является самой крестной иконой. Поскольку представление прозрачное, голова чата отображается вверху этого представления.
Спасибо за помощь. Я дам создание этого креста. Так будет ли это мнение вызываться после внедрения draglistener? –
Да, вы можете отобразить этот вид в реализации draglistener – Danny
Спасибо .. попробуем, и если он работает, обновите код ... еще раз ping u за помощью –
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);
Это удаляет пузырьки после перетаскивания в определенном месте.
Пожалуйста, поделитесь своим chatheaddemo xml также – jyomin
Акаше вы можете поделиться своим кодом, как вы это реализуете? – jyomin
Привет, Жомин, извините, что требование было прекращено, поэтому на данный момент у меня нет рабочего кода. Вы можете посмотреть комментарии ниже –