У меня есть круговая диаграмма и карта на экране. Между графиком и картой есть небольшое изображение. Когда перемещение изображения просматривается, диаграмма и изображение карты должны расти и сжиматься. Он работает, но когда я перемещаю изображение, приложение дрожит. Я хочу, чтобы их размеры менялись плавно. Я думаю, что это связано с круговой диаграммой. Как я могу это исправить? Благодарю. Вот мой Java-код:Плавное изменение размера карты и карты
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);
Вот мой 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>
Вы когда-нибудь пробовали ValueAnimator ...? Это позволяет вам изменять свойства просмотра плавно .... – Moinkhan