scrollView内有折线图,我的所有数据都是7点,滚动屏幕时有滞后, 我尝试使用nestedScrollview或禁用图表可访问性,但仍然有滞后。 当图表没有数据时,scrollView会非常平滑,但是当我在图表上设置数据时,滚动效果不好
这是设置程序类
public class Setupcharts {
public LineData drawChart(Context context,ArrayList<Entry> entries,LineChart chart,String[] labels) {
if (entries.size() > 0) {
//customization dataSet Settings
LineDataSet set = new LineDataSet(entries,"");
set.setaxisDependency(YAxis.AxisDependency.LEFT);
set.setDrawValues(true);
set.setLineWidth(3f);
set.setDrawCircles(true);
set.setvalueTextSize(12f);
set.setMode(LineDataSet.Mode.CUBIC_BEZIER);
set.setvalueTextColor(context.getResources().getcolor(R.color.progress));
set.setColor(context.getResources().getcolor(R.color.progress));
set.setCircleColor(context.getResources().getcolor(R.color.progress));
//customization chart settings
chart.setNoDataText("No data");
chart.setTouchEnabled(false);
chart.setDragEnabled(false);
chart.setDrawGridBackground(false);
chart.getDescription().setEnabled(false);
chart.setPinchzoom(false);
chart.setnestedScrollingEnabled(false);
chart.getLegend().setEnabled(false);
if (labels != null) {
//customization XAxis settings
XAxis x1 = chart.getXAxis();
x1.setTextColor(context.getResources().getcolor(R.color.progress));
x1.setDrawGridLines(false);
x1.setavoidFirstLastClipping(true);
x1.setPosition(XAxis.XAxisPosition.BOTTOM);
x1.setvalueFormatter(new IndexAxisValueFormatter(labels));
x1.setLabelCount(labels.length,true);
}
//customization YAxis settings
YAxis y1 = chart.getaxisLeft();
y1.setDrawLabels(false);
y1.setTextColor(Color.BLACK);
y1.setDrawGridLines(false);
YAxis y2 = chart.getaxisRight();
y2.setEnabled(false);
LineData data = new LineData(set);
//set custom font
Typeface face = Typeface.createFromAsset(context.getassets(),"Shabnamn.ttf");
data.setvalueTypeface(face);
chart.getXAxis().setTypeface(face);
return data;
}else
return null;
}
}
和活动中
public void parseResponse(字符串响应){
ArrayList<Entry> entries = new ArrayList<>();
try {
JSONObject object = new JSONObject(response);
JSONArray array = object.getJSONArray("summary");
labels = new String[array.length()];
int j = 0;
for (int i = array.length() - 1; i >= 0; i--) {
JSONObject object1 = array.getJSONObject(i);
int y = object1.getInt("burnt_calory");
entries.add(new Entry(j,y));
date = object1.getString("at_date");
j++;
}
} catch (JSONException e) {
e.printStackTrace();
Log.i("action response catch","error");
}
LineData data = new
Setupcharts().drawChart(actionactivity.this,entries,chart,labels);
chart.setData(data);
chart.animateY(55*35,Easing.Linear);
}
这是xml文件
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/scrollView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layoutDirection="ltr">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/constraintLayout"
android:layout_marginBottom="16dp"
android:background="@color/darkWhite"
android:orientation="vertical"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:paddingBottom="16dp">
<Button
android:id="@+id/btnactionDate"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="@drawable/green_btn_border"
android:drawableStart="@drawable/ic_arrow_drop_down_black_24dp"
android:paddingStart="10dp"
android:paddingEnd="10dp"
android:textColor="@color/colorWhite"
android:textSize="12sp"
app:layout_constraintWidth_percent="0.4"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/toolbar" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/txtactionTitle"
android:text="@string/steps"
android:textSize="14sp"
app:layout_constraintTop_toTopOf="@id/btnactionDate"
app:layout_constraintBottom_toBottomOf="@id/btnactionDate"
app:layout_constraintEnd_toEndOf="parent"/>
<ProgressBar
android:id="@+id/progressbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:elevation="2dp"
android:indeterminate="true"
android:indeterminateTint="@color/progress"
android:visibility="visible"
app:layout_constraintBottom_toBottomOf="@id/powerSportCard"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.cardview.widget.CardView
android:id="@+id/car12"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_marginTop="20dp"
android:elevation="2dp"
app:cardCornerRadius="8dp"
app:layout_constraintTop_toBottomOf="@+id/btnactionDate">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/txtProgress"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:gravity="center"
android:text="@string/daily_activity_amount"
android:textSize="12sp"
app:layout_constraintBottom_toBottomOf="@+id/arc_progress"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<com.github.lzyzsd.circleprogress.ArcProgress
android:id="@+id/arc_progress"
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_gravity="center"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
app:arc_angle="230"
app:arc_bottom_text="60 دقیقه"
app:arc_bottom_text_size="20dp"
app:arc_finished_color="@color/progress"
app:arc_text_color="@color/BlackColor"
app:arc_text_size="30dp"
app:arc_unfinished_color="@color/Gray"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@+id/card13"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_marginTop="20dp"
android:elevation="2dp"
app:cardCornerRadius="8dp"
app:layout_constraintTop_toBottomOf="@+id/car12">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/txtChartTitle"
android:layout_gravity="end"
android:layout_marginTop="4dp"
android:layout_marginEnd="4dp"
android:text="@string/cal_history"
android:textSize="12sp" />
<com.github.mikephil.charting.charts.LineChart
android:id="@+id/lineChart2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="8dp" />
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@+id/cardView12"
android:layout_width="0dp"
android:layout_height="100dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="8dp"
app:cardCornerRadius="8dp"
app:layout_constraintEnd_toStartOf="@+id/cardView3"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/card13">
<TextView
android:id="@+id/txtCalories"
android:drawableTop="@drawable/ic_carbohydrates"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:drawablePadding="8dp"
android:gravity="center" />
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@+id/cardView3"
android:layout_width="0dp"
android:layout_height="100dp"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_weight="1"
app:cardCornerRadius="8dp"
app:layout_constraintEnd_toStartOf="@+id/cardView11"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/cardView12"
app:layout_constraintTop_toTopOf="@+id/cardView12">
<TextView
android:id="@+id/txtKm"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableTop="@drawable/ic_racing_car"
android:layout_gravity="center"
android:drawablePadding="8dp"
android:gravity="center" />
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@+id/cardView11"
android:layout_width="0dp"
android:layout_height="100dp"
android:layout_marginStart="8dp"
android:layout_weight="1"
app:cardCornerRadius="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/cardView3"
app:layout_constraintTop_toTopOf="@+id/cardView12">
<TextView
android:id="@+id/txtTime"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableTop="@drawable/ic_alarm_clock"
android:layout_gravity="center"
android:drawablePadding="8dp"
android:gravity="center" />
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@+id/walkSportCard"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:layout_weight="1"
app:cardCornerRadius="8dp"
app:layout_constraintEnd_toStartOf="@+id/powerSportCard"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/cardView12">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/Types_of_running"
android:textSize="12sp"
android:drawableTop="@drawable/ic_climb"
android:layout_gravity="center"
android:drawablePadding="10dp"
android:gravity="center"
android:paddingBottom="20dp"
android:paddingTop="20dp"/>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@+id/powerSportCard"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
app:cardCornerRadius="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/walkSportCard"
app:layout_constraintTop_toTopOf="@+id/walkSportCard">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/Powerful_exercises"
android:textSize="12sp"
android:drawableTop="@drawable/ic_weight"
android:layout_gravity="center"
android:drawablePadding="10dp"
android:gravity="center"
android:paddingBottom="20dp"
android:paddingTop="20dp"/>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@+id/dailyCard"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="24dp"
android:layout_weight="1"
app:cardCornerRadius="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/competitionSportCard"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/walkSportCard">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/daily_activity"
android:textSize="12sp"
android:drawableTop="@drawable/ic_bathtub"
android:layout_gravity="center"
android:drawablePadding="10dp"
android:gravity="center"
android:paddingBottom="20dp"
android:paddingTop="20dp"
/>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@+id/competitionSportCard"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
app:cardCornerRadius="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/dailyCard"
app:layout_constraintTop_toTopOf="@+id/dailyCard">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/Competitive_sports"
android:textSize="12sp"
android:drawableTop="@drawable/ic_podium"
android:layout_gravity="center"
android:drawablePadding="10dp"
android:gravity="center"
android:paddingBottom="20dp"
android:paddingTop="20dp"/>
</androidx.cardview.widget.CardView>
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/darkWhite"
android:elevation="0dp"
app:layout_constraintTop_toTopOf="parent"
app:popuptheme="@style/Apptheme.PopupOverlay">
</androidx.appcompat.widget.Toolbar>
<FrameLayout
android:id="@+id/sportFrame"
android:layout_width="match_parent"
android:layout_height="0dp"
android:elevation="2dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>