1

I want to scale text view with bounded area and bounded text view move on image view by freehand.

Actually, I want exactly like that link

but nobody help regarding that question

please help me how to solve that problem specially bounded text view with movement on image view in android.

my code :

public class MainActivity extends Activity {

TextView scaleGesture;
ScaleGestureDetector scaleGestureDetector;

private View selected_item = null;
private int offset_x = 0;
private int offset_y = 0;

Bitmap bitmap;
LinearLayout view1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity);
    scaleGesture = (TextView) findViewById(R.id.textView1);
    scaleGesture.setText("this is some text how do you do?");
    scaleGestureDetector = new ScaleGestureDetector(this,
            new simpleOnScaleGestureListener());

    ViewGroup vg = (ViewGroup) findViewById(R.id.vg);
    vg.setOnTouchListener(new View.OnTouchListener() {

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

            scaleGestureDetector.onTouchEvent(event);

            if (selected_item != null) {
                switch (event.getActionMasked()) {
                case MotionEvent.ACTION_MOVE:
                    int x = (int) event.getX() - offset_x;
                    int y = (int) event.getY() - offset_y;
                    //
                    int w = getWindowManager().getDefaultDisplay()
                            .getWidth() - 100;
                    int h = getWindowManager().getDefaultDisplay()
                            .getHeight() - 100;
                    if (x > w)
                        x = w;
                    if (y > h)
                        y = h;
                    if (x < 0)
                        x = 0;
                    if (y < 0)
                        y = 0;
                    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
                            new ViewGroup.MarginLayoutParams(
                                    LinearLayout.LayoutParams.WRAP_CONTENT,
                                    LinearLayout.LayoutParams.WRAP_CONTENT));
                    lp.setMargins(x, y, 0, 0);

                    selected_item.setLayoutParams(lp);
                    break;
                default:
                    break;
                }
            }
            return true;
        }
    });
    // TextView img = (TextView)findViewById(R.id.textView1);
    scaleGesture.setOnTouchListener(new View.OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            switch (event.getActionMasked()) {
            case MotionEvent.ACTION_DOWN:
                offset_x = (int) event.getX();
                offset_y = (int) event.getY();
                selected_item = v;
                break;
            default:
                break;
            }

            return false;
        }
    });
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

// @Override
// public boolean onTouchEvent(MotionEvent event) {
// // TODO Auto-generated method stub
// scaleGestureDetector.onTouchEvent(event);
// return true;
// }

public class simpleOnScaleGestureListener extends
        SimpleOnScaleGestureListener {

    @Override
    public boolean onScale(ScaleGestureDetector detector) {
        // TODO Auto-generated method stub
        float size = scaleGesture.getTextSize();
        Log.d("TextSizeStart", String.valueOf(size));

        float factor = detector.getScaleFactor();
        Log.d("Factor", String.valueOf(factor));

        float product = size * factor;
        Log.d("TextSize", String.valueOf(product));
        scaleGesture.setTextSize(TypedValue.COMPLEX_UNIT_PX, product);

        size = scaleGesture.getTextSize();
        Log.d("TextSizeEnd", String.valueOf(size));
        return true;
    }
}

layout:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<LinearLayout
    android:id="@+id/vg"
    android:layout_width="500dp"
    android:layout_height="500dp"
    android:background="@drawable/bg" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Static ZoomControls"
        android:textColor="#4169E1"
        android:textSize="18dp" />
</LinearLayout>

Community
  • 1
  • 1
Shashank Gupta
  • 165
  • 2
  • 16

0 Answers0