Ho un grafico a torta e una vista mappa sullo schermo. Tra grafico e mapview, c'è una piccola visione d'immagine. Quando si muove la visualizzazione di immagini, si suppone che il grafico e il mapview crescano e si riducano. Funziona, ma quando sposto imageview, l'app sta tremando. Voglio che le loro dimensioni cambino senza problemi. Penso che sia dovuto al grafico a torta. Come posso risolvere questo? Grazie. Ecco il mio codice Java:Ridimensionamento uniforme di un grafico e di una vista mappa
final LinearLayout aboveLinear = (LinearLayout) findViewById(R.id.aboveLinear);
final LinearLayout belowLinear = (LinearLayout) findViewById(R.id.belowLinear);
final ImageView imageView2 = (ImageView) findViewById(R.id.imageView2);
detector = new GestureDetectorCompat(this, new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
if (aboveLinear == null || belowLinear == null) {
return true;
}
distanceY*=-1;
int height = aboveLinear.getHeight () + mapview.getHeight ();
ViewGroup.LayoutParams layoutParams = aboveLinear.getLayoutParams ();
if ((int) distanceY + layoutParams.height < minH)
layoutParams.height = minH;
else if ((int) distanceY + layoutParams.height > height - minH)
layoutParams.height = height - minH;
else
layoutParams.height = (int) distanceY + layoutParams.height;
ViewGroup.LayoutParams layoutParams2 = belowLinear.getLayoutParams ();
layoutParams2.height = height - layoutParams.height;
aboveLinear.setLayoutParams (layoutParams);
belowLinear.setLayoutParams (layoutParams2);
return true;
}
});
imageView2.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(final View view, final MotionEvent motionEvent) {
return detector.onTouchEvent(motionEvent);
}
});
mapview = (MapView) findViewById(R.id.mapview);
mapview.onCreate(savedInstanceState);
chart1 = (PieChart) findViewById(R.id.chart1);
chart1.setUsePercentValues(true);
chart1.setDescription("");
chart1.setExtraOffsets(5, 10, 5, 5);
chart1.setDragDecelerationFrictionCoef(0.95f);
Ecco il mio codice XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
xmlns:mapbox="http://schemas.android.com/apk/res-auto"
android:id="@+id/root">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:id="@+id/aboveLinear">
<com.github.mikephil.charting.charts.PieChart
android:id="@+id/chart1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:scaleType="fitXY"/>
</LinearLayout>
<ImageView
android:id="@+id/imageView2"
android:layout_width="match_parent"
android:layout_height="25dp"
android:layout_alignParentTop="true"
android:clickable="true"
android:scaleType="fitXY"
android:src="@drawable/red"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:id="@+id/belowLinear">
<com.mapbox.mapboxsdk.maps.MapView
android:layout_height="match_parent"
android:scaleType="fitXY"
android:id="@+id/mapview"
android:layout_width="fill_parent"
mapbox:access_token="@string/accessToken"
mapbox:style_url="@string/style_mapbox_streets"
mapbox:center_latitude="41.885"
mapbox:center_longitude="-87.679"
mapbox:zoom="12"
mapbox:tilt="20"/>
</LinearLayout>
</LinearLayout>
Hai mai provato ValueAnimator ...? Ti permette di cambiare le proprietà della vista senza problemi .... – Moinkhan