#android #mpandroidchart #android-graphview #rangeslider
Вопрос:
Я пытался создать Cubic Line
диаграмму, используя MPChart
библиотеку внутри моего макета переработчика из моего класса адаптера. Внутри макета моего класса адаптера у меня есть line Chart
и range Slider
, где line Chart
он находится сверху Range Slider
. В настоящее Line Data
время он заполнен красным цветом . В соответствии с моим требованием, я должен получить X
ось, Y
ось min
и max
значения при поиске Range Slider
и отменить выбор отмеченной позиции на графике с отмененным цветом.Я смог сделать первое изображение (перед поиском). Как мы можем реализовать второй образ?
Пример Xml-Кода:
lt;?xml version="1.0" encoding="utf-8"?gt; lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:translationZ="15dp"gt; lt;LinearLayout android:id="@ id/store_root_cont_layout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"gt; lt;LinearLayout android:id="@ id/complete_root_lyt" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:orientation="vertical"gt; lt;RelativeLayout android:id="@ id/filter_root_img_ly" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="30dp" android:gravity="center" android:visibility="visible"gt; lt;com.github.mikephil.charting.charts.LineChart android:id="@ id/chart1" android:layout_width="match_parent" android:layout_height="wrap_content" /gt; lt;RelativeLayout android:id="@ id/filter_enable_root_lyt" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="13dp" android:gravity="center_vertical"gt; lt;com.google.android.material.slider.RangeSlider android:id="@ id/rangeSlider" style="@style/Theme.rySampleApp" android:layout_width="match_parent" android:layout_height="wrap_content" android:progressDrawable="@drawable/progress_layout_bg" android:stepSize="1" android:theme="@style/Theme.trySampleApp" android:valueFrom="0.0" android:valueTo="100.0" app:labelBehavior="gone" app:thumbColor="#01b0c3" app:tickVisible="false" app:values="@array/initial_slider_values" /gt; lt;/RelativeLayoutgt; lt;/RelativeLayoutgt; lt;RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"gt; lt;TextView android:id="@ id/taste_OnStartTrackingTouch" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="9dp" android:ellipsize="end" android:maxLines="1" android:text="$0" android:textColor="@color/black" android:textSize="16sp"gt; lt;/TextViewgt; lt;TextView android:id="@ id/taste_OnStopTrackingTouch" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:ellipsize="end" android:maxLines="1" android:text="$100 " android:textColor="@color/black" android:textSize="16sp"gt; lt;/TextViewgt; lt;/RelativeLayoutgt; lt;LinearLayout android:id="@ id/location_show_lyt_root_Search" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="20dp" android:orientation="vertical" android:visibility="gone"gt; lt;androidx.appcompat.widget.SearchView android:id="@ id/store_Search" android:layout_width="match_parent" android:layout_height="40dp" android:background="@drawable/filter_search_bar_bg_lyt" app:iconifiedByDefault="false" app:queryHint="Search"gt; lt;/androidx.appcompat.widget.SearchViewgt; lt;ScrollView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="5dp"gt; lt;androidx.recyclerview.widget.RecyclerView android:id="@ id/filter_store_Recycler_lyt" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:theme="@style/Theme.trySampleApp"gt; lt;/androidx.recyclerview.widget.RecyclerViewgt; lt;/ScrollViewgt; lt;/LinearLayoutgt; lt;/LinearLayoutgt; lt;/LinearLayoutgt; lt;/LinearLayoutgt;
код адаптера:
@Override public void onBindViewHolder(@NonNull @NotNull RecyclerView.ViewHolder holder, int position) { viewHolderOne = (ViewHolder) holder; viewHolderOne.chart.getDescription().setEnabled(false); viewHolderOne.chart.setDrawGridBackground(false); viewHolderOne.chart.setHighlightPerDragEnabled(false); viewHolderOne.chart.getXAxis().setDrawAxisLine(false); viewHolderOne.chart.getXAxis().setDrawGridLines(false); viewHolderOne.chart.getAxisLeft().setDrawGridLines(false); viewHolderOne.chart.getAxisRight().setDrawGridLines(false); viewHolderOne.chart.getAxisRight().setDrawLimitLinesBehindData(false); viewHolderOne.chart.getAxisLeft().setDrawLabels(false); viewHolderOne.chart.getAxisRight().setDrawLabels(false); viewHolderOne.chart.getXAxis().setDrawLabels(false); viewHolderOne.chart.getXAxis().setDrawLimitLinesBehindData(false); viewHolderOne.chart.getLegend().setEnabled(false); lineDataSet = new LineDataSet(setDataValues(values),"Data set 1"); lineDataSet.setMode(LineDataSet.Mode.CUBIC_BEZIER); lineDataSet.setDrawFilled(true); lineDataSet.setDrawValues(false); lineDataSet.setFillAlpha(100); lineDataSet.setFillColor(ContextCompat.getColor(context,R.color.green)); lineDataSet.setDrawCircles(false); lineDataSet.setCubicIntensity(0.1f); lineDataSet.setDrawHorizontalHighlightIndicator(false); lineDataSet.setDrawVerticalHighlightIndicator(false); ArrayListlt;ILineDataSetgt; dataSets = new ArrayListlt;gt;(); dataSets.add(lineDataSet); LineData data = new LineData(dataSets); data.setValueFormatter(new DefaultValueFormatter(0)); viewHolderOne.chart.setData(data); viewHolderOne.chart.invalidate(); viewHolderOne.filterTasteRangeSlider.addOnChangeListener((slider, value, fromUser) -gt; { Log.d("TasteRangleSlider","Seeked"); sliderSeekValueStart = viewHolderOne.filterTasteRangeSlider.getValues().get(0); sliderSeekValueStop = viewHolderOne.filterTasteRangeSlider.getValues().get(1); valuesFromInt = Math.round(viewHolderOne.filterTasteRangeSlider.getValues().get(0)); valuesToInt = Math.round(viewHolderOne.filterTasteRangeSlider.getValues().get(1)); LineDataSet lineDataSetSecond = new LineDataSet(setSeekDataValues(sliderSeekValueStart,sliderSeekValueStop),"Data set 2"); lineDataSetSecond.setMode(LineDataSet.Mode.CUBIC_BEZIER); lineDataSetSecond.setDrawFilled(true); lineDataSetSecond.setDrawValues(false); lineDataSetSecond.setFillAlpha(100); lineDataSetSecond.setFillColor(ContextCompat.getColor(context,R.color.red)); lineDataSetSecond.setDrawCircles(false); lineDataSetSecond.setCubicIntensity(0.1f); lineDataSetSecond.setDrawHorizontalHighlightIndicator(false); lineDataSetSecond.setDrawVerticalHighlightIndicator(false); ArrayListlt;ILineDataSetgt; dataSetFirst = new ArrayListlt;gt;(); dataSetFirst.add(lineDataSetSecond); LineData dataFirst = new LineData(dataSetFirst); dataFirst.setValueFormatter(new DefaultValueFormatter(0)); viewHolderOne.chart.setData(dataFirst); viewHolderOne.chart.invalidate(); }); } private ArrayListlt;Entrygt; setDataValues(Listlt;TasteGraphValuegt; values) { setValues to Chart:: ArrayListlt;Entrygt; dataVal = new ArrayListlt;Entrygt;(); for (int i = 0; i lt; values.size(); i ) { double xVal = values.get(i).getX(); Double D = Double.valueOf(xVal); // Double D = Double.valueOf(x); xValConverted = D.floatValue(); yVal = values.get(i).getY(); //dataVal.add(new Entry(xValConverted, yVal)); dataVal.add(new Entry(xValConverted, yVal)); } return dataVal; }
Комментарии:
1. довольно срочное требование . Есть какие-либо предложения по вышеуказанному требованию???