Changing the height of the relative layout at the same speed as the user. Fingers moving on the layout

I am new to development and I am creating an application in which I have one relative layout and below the relative layout of one ListView. Now the problem is that I have to change the height of this relative layout (in blue background) from 300dp to 140dp dynamically when the user moves the list when this RelativeLayout reaches its threshold value min, i.e. 140dp RelativeLayout Height should stop the decrease, and the Listview should move at its normal speed.

Here is the image below and thanks in Advance

enter image description here

enter image description here

enter image description here

`

package com.example.testmovinglayout;

import java.util.ArrayList;
import java.util.Arrays;

import android.app.Activity;
import android.graphics.Matrix;
import android.graphics.PointF;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;

public class MainActivity extends Activity implements View.OnTouchListener {

Matrix matrix = new Matrix();
Matrix savedMatrix = new Matrix();

static final int NONE = 0;
static final int DRAG = 1;
static final int ZOOM = 2;
int mode = NONE;
private float[] matrixValues = new float[9];
float matrixX = 0; // X coordinate of matrix inside the ImageView
float matrixY = 0; // Y coordinate of matrix inside the ImageView
float width = 0; // width of drawable
float height = 0; // height of drawable
private float dx; // postTranslate X distance
private float dy; // postTranslate Y distance

PointF start = new PointF();
PointF mid = new PointF();
float oldDist = 1f;

int height_120dp;
int height_230dp;

private ListView mainListView;
private ArrayAdapter<String> listAdapter;
LinearLayout superLL;
LinearLayout parent_LLID;
RelativeLayout rlTest;
TextView _view;
// ViewGroup _root;
private int _xDelta;
private int _yDelta;

private int YThreshold;

// Create a string for the ImageView label
private static final String IMAGEVIEW_TAG = "icon bitmap";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final float scale = getResources().getDisplayMetrics().density;
    height_120dp = (int) (120 * scale + 0.5f);
    height_230dp = (int) (230 * scale + 0.5f);

    rlTest = (RelativeLayout) findViewById(R.id.rlTest);
    parent_LLID = (LinearLayout) findViewById(R.id.parent_LLID);
    superLL = (LinearLayout) findViewById(R.id.superLL);

    // Find the ListView resource.
    mainListView = (ListView) findViewById(R.id.mainListView);

    // Create and populate a List of planet names.
    String[] planets = new String[] { "Mercury", "Venus", "Earth", "Mars",
            "Jupiter", "Saturn", "Uranus", "Neptune" };
    ArrayList<String> planetList = new ArrayList<String>();
    planetList.addAll(Arrays.asList(planets));

    // Create ArrayAdapter using the planet list.
    listAdapter = new ArrayAdapter<String>(this, R.layout.simplerow,
            planetList);

    // Add more planets. If you passed a String[] instead of a List<String>
    // into the ArrayAdapter constructor, you must not add more items.
    // Otherwise an exception will occur.
    listAdapter.add("Ceres");
    listAdapter.add("Pluto");
    listAdapter.add("Haumea");
    listAdapter.add("Makemake");
    listAdapter.add("Eris");

    // Set the ArrayAdapter as the ListView adapter.
    mainListView.setAdapter(listAdapter);

    // _root = (ViewGroup)findViewById(R.id.root);

    _view = new TextView(this);
    _view.setText("TextView!!!!!!!!");

    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.MATCH_PARENT,
            LinearLayout.LayoutParams.WRAP_CONTENT);
    layoutParams.leftMargin = 0;
    layoutParams.topMargin = 0;
    layoutParams.bottomMargin = 0;
    layoutParams.rightMargin = 0;
    mainListView.setLayoutParams(layoutParams);

    mainListView.setOnTouchListener(this);

}



@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 onTouch(View v, MotionEvent event) {
    final int X = (int) event.getRawX();
    int Y = (int) event.getRawY();

    Log.v("Y is  : ", "" + Y);

    switch (event.getAction() & MotionEvent.ACTION_MASK) {
    case MotionEvent.ACTION_DOWN:
        LinearLayout.LayoutParams lParams = (LinearLayout.LayoutParams) superLL
                .getLayoutParams();
        _xDelta = X - lParams.leftMargin;
        _yDelta = Y - lParams.topMargin;

        Log.v("event.getX() is  : ", "" + event.getX());
        Log.v("event.getY() is  : ", "" + event.getY());
         savedMatrix.set(matrix);  
         start.set(event.getX(), event.getY());  
         mode = DRAG;  

        Log.v("_yDelta is  : ", "" + _yDelta);
        break;
    case MotionEvent.ACTION_UP:


        Log.v("event.getX() is  : ", "" + event.getX());
        Log.v("event.getY() is  : ", "" + event.getY());
         savedMatrix.set(matrix);  
         start.set(event.getX(), height_120dp);  
         mode = DRAG;  




        break;
    case MotionEvent.ACTION_POINTER_DOWN:



        break;
    case MotionEvent.ACTION_POINTER_UP:
        break;
    case MotionEvent.ACTION_MOVE:
        LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) superLL
                .getLayoutParams();
        // layoutParams.leftMargin = X - _xDelta;
        layoutParams.topMargin = Y - _yDelta;
        // layoutParams.rightMargin = 20;
        // layoutParams.bottomMargin = -250;
        superLL.setLayoutParams(layoutParams);
        break;
    }
    parent_LLID.invalidate();
    return true;
}

}    
 ` 





  `     
     <?xml version="1.0" encoding="utf-8"?>
           <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/parent_LLID"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >


<LinearLayout 
    android:id="@+id/superLL"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:orientation="vertical">
<RelativeLayout
    android:id="@+id/rlTest"
    android:layout_width="match_parent"
    android:layout_height="230dp"
    android:background="#aafff7" 
    >
</RelativeLayout>

     <ListView
         android:id="@+id/mainListView"
         android:background="#ffffff"
         android:layout_below="@+id/rlTest"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent" >
     </ListView>
  </LinearLayout>
 </LinearLayout>

`

+4
1

, ListView ,

+1

All Articles