editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (s.toString().equals("")) {
tvInImage.setVisibility(View.INVISIBLE);
} else {
tvInImage.setVisibility(View.VISIBLE);
tvInImage.setText(s);
if(tvInImage.getX() < conPositionX){
tvInImage.setX(conPositionX);
}
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
final GestureDetector gestureDetector = new GestureDetector(this, new SimpleGestureListenerImpl());
imageView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
gestureDetector.onTouchEvent(event);
return true;
}
});
private int a = 0;
private float IntervalX, IntervalY;
private class SimpleGestureListenerImpl extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
IntervalX -= distanceX;
IntervalY -= distanceY;
a++;
IntervalX = calPosition(conPositionX - tvInImage.getX(),
conPositionX + conWidth - (tvInImage.getX() + tvInImage.getWidth()),
IntervalX);
IntervalY = calPosition(conPositionY - tvInImage.getY(),
conPositionY + conHeight - (tvInImage.getY() + tvInImage.getHeight()),
IntervalY);
if (a % 7 == 0) {
tvInImage.setX(tvInImage.getX() + IntervalX);
tvInImage.setY(tvInImage.getY() + IntervalY);
}
return true;
}
}
private float calPosition(float min, float max, float current) {
if (current < min) {
return min;
}
if (current > max) {
return max;
}
return current;
}