diff --git a/README.md b/README.md index 7ab0bd3..13b08fa 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ Library Size just ~ 50 KB. ```gradle dependencies { - compile 'com.github.anastr:speedviewlib:1.1.6' + compile 'com.github.anastr:speedviewlib:1.1.7' } ``` @@ -38,7 +38,7 @@ for **maven** com.github.anastr speedviewlib - 1.1.6 + 1.1.7 pom ``` @@ -49,14 +49,14 @@ choose one of Speedometers, gauges and add it to your `Layout.xml`, here we use ``` for all speedometers and gauges, this simple method to smoothly change speed: ```java -SpeedView speedometer = (SpeedView) findViewById(R.id.speedView); +SpeedView speedometer = findViewById(R.id.speedView); // move to 50 Km/s speedometer.speedTo(50); @@ -74,7 +74,7 @@ and also you can see **Advanced Usage** in [Usage - Wiki](https://github.com/ana -## we have **9 Speedometers, Gauges** : +## All Speedometers, Gauges : @@ -90,7 +90,7 @@ and also you can see **Advanced Usage** in [Usage - Wiki](https://github.com/ana
 < com.github.anastr.speedviewlib.SpeedView
         android:id="@+id/speedView"
-        android:layout_width="300dp"
+        android:layout_width="wrap_content"
         android:layout_height="wrap_content" />
 	
@@ -103,7 +103,7 @@ and also you can see **Advanced Usage** in [Usage - Wiki](https://github.com/ana
 < com.github.anastr.speedviewlib.DeluxeSpeedView
         android:id="@+id/deluxeSpeedView"
-        android:layout_width="300dp"
+        android:layout_width="wrap_content"
         android:layout_height="wrap_content" />
       
@@ -116,7 +116,7 @@ and also you can see **Advanced Usage** in [Usage - Wiki](https://github.com/ana
 < com.github.anastr.speedviewlib.AwesomeSpeedometer
         android:id="@+id/awesomeSpeedometer"
-        android:layout_width="300dp"
+        android:layout_width="wrap_content"
         android:layout_height="wrap_content" />
       
@@ -129,7 +129,7 @@ and also you can see **Advanced Usage** in [Usage - Wiki](https://github.com/ana
 < com.github.anastr.speedviewlib.RaySpeedometer
         android:id="@+id/raySpeedometer"
-        android:layout_width="300dp"
+        android:layout_width="wrap_content"
         android:layout_height="wrap_content" />
       
@@ -142,7 +142,7 @@ and also you can see **Advanced Usage** in [Usage - Wiki](https://github.com/ana
 < com.github.anastr.speedviewlib.PointerSpeedometer
         android:id="@+id/pointerSpeedometer"
-        android:layout_width="300dp"
+        android:layout_width="wrap_content"
         android:layout_height="wrap_content" />
       
@@ -155,7 +155,7 @@ and also you can see **Advanced Usage** in [Usage - Wiki](https://github.com/ana
 < com.github.anastr.speedviewlib.TubeSpeedometer
         android:id="@+id/tubeSpeedometer"
-        android:layout_width="300dp"
+        android:layout_width="wrap_content"
         android:layout_height="wrap_content" />
       
@@ -168,7 +168,7 @@ and also you can see **Advanced Usage** in [Usage - Wiki](https://github.com/ana
 < com.github.anastr.speedviewlib.ImageSpeedometer
         android:id="@+id/imageSpeedometer"
-        android:layout_width="300dp"
+        android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         app:sv_image="@drawable/your_image" />
       
@@ -208,7 +208,7 @@ and also you can see **Advanced Usage** in [Usage - Wiki](https://github.com/ana * add fuel gauge component. * build new custom speedometer. -your `pull request` is always Welcome, please review the **[rules of contribution](https://github.com/anastr/SpeedView/wiki/Contributing)** to make useful change. +your `pull request` is always Welcome, please review the **[rules of contribution](https://github.com/anastr/SpeedView/blob/master/CONTRIBUTING.md)** to make useful change. ## Coming Soon ... i well try to draw this Speedometer. diff --git a/app/build.gradle b/app/build.gradle index 40daf7e..94b7e6e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,13 +1,13 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 26 - buildToolsVersion '26.0.2' + compileSdkVersion 27 + buildToolsVersion '27.0.0' defaultConfig { applicationId "com.github.anastr.speedview" minSdkVersion 14 - targetSdkVersion 26 + targetSdkVersion 27 versionCode 1 versionName "1.0" } @@ -23,6 +23,6 @@ android { } dependencies { - compile 'com.android.support:appcompat-v7:26.+' + compile 'com.android.support:appcompat-v7:27.+' compile project(':speedviewlib') } diff --git a/app/src/main/java/com/github/anastr/speedview/AwesomeSpeedometerActivity.java b/app/src/main/java/com/github/anastr/speedview/AwesomeSpeedometerActivity.java index ff001b9..b9269c6 100644 --- a/app/src/main/java/com/github/anastr/speedview/AwesomeSpeedometerActivity.java +++ b/app/src/main/java/com/github/anastr/speedview/AwesomeSpeedometerActivity.java @@ -23,12 +23,12 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_awesome_speedometer); - awesomeSpeedometer = (AwesomeSpeedometer) findViewById(R.id.awesomeSpeedometer); - seekBar = (SeekBar) findViewById(R.id.seekBar); - speedTo = (Button) findViewById(R.id.speedTo); - realSpeedTo = (Button) findViewById(R.id.realSpeedTo); - stop = (Button) findViewById(R.id.stop); - textSpeed = (TextView) findViewById(R.id.textSpeed); + awesomeSpeedometer = findViewById(R.id.awesomeSpeedometer); + seekBar = findViewById(R.id.seekBar); + speedTo = findViewById(R.id.speedTo); + realSpeedTo = findViewById(R.id.realSpeedTo); + stop = findViewById(R.id.stop); + textSpeed = findViewById(R.id.textSpeed); speedTo.setOnClickListener(new View.OnClickListener() { @Override diff --git a/app/src/main/java/com/github/anastr/speedview/ControlActivity.java b/app/src/main/java/com/github/anastr/speedview/ControlActivity.java index 4db6299..9b1084c 100644 --- a/app/src/main/java/com/github/anastr/speedview/ControlActivity.java +++ b/app/src/main/java/com/github/anastr/speedview/ControlActivity.java @@ -27,12 +27,12 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_control); - speedView = (SpeedView) findViewById(R.id.awesomeSpeedometer); - seekBar = (SeekBar) findViewById(R.id.seekBar); - textSpeed = (TextView) findViewById(R.id.textSpeed); - maxSpeed = (EditText) findViewById(R.id.maxSpeed); - speedometerWidth = (EditText) findViewById(R.id.speedometerWidth); - withTremble = (CheckBox) findViewById(R.id.withTremble); + speedView = findViewById(R.id.awesomeSpeedometer); + seekBar = findViewById(R.id.seekBar); + textSpeed = findViewById(R.id.textSpeed); + maxSpeed = findViewById(R.id.maxSpeed); + speedometerWidth = findViewById(R.id.speedometerWidth); + withTremble = findViewById(R.id.withTremble); withTremble.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override @@ -87,7 +87,7 @@ public void setSpeedometerWidth(View view) { } public void setSpeedTextSize(View view) { - EditText speedTextSize = (EditText) findViewById(R.id.speedTextSize); + EditText speedTextSize = findViewById(R.id.speedTextSize); try { float size = Float.parseFloat(speedTextSize.getText().toString()); speedView.setSpeedTextSize(size); @@ -98,7 +98,7 @@ public void setSpeedTextSize(View view) { } public void setIndicatorColor(View view) { - EditText indicatorColor = (EditText) findViewById(R.id.indicatorColor); + EditText indicatorColor = findViewById(R.id.indicatorColor); try{ speedView.setIndicatorColor(Color.parseColor(indicatorColor.getText().toString())); } catch (Exception e) { @@ -107,7 +107,7 @@ public void setIndicatorColor(View view) { } public void setCenterCircleColor(View view) { - EditText centerCircleColor = (EditText) findViewById(R.id.centerCircleColor); + EditText centerCircleColor = findViewById(R.id.centerCircleColor); try{ speedView.setCenterCircleColor(Color.parseColor(centerCircleColor.getText().toString())); } catch (Exception e) { @@ -116,7 +116,7 @@ public void setCenterCircleColor(View view) { } public void setLowSpeedColor(View view) { - EditText lowSpeedColor = (EditText) findViewById(R.id.lowSpeedColor); + EditText lowSpeedColor = findViewById(R.id.lowSpeedColor); try{ speedView.setLowSpeedColor(Color.parseColor(lowSpeedColor.getText().toString())); } catch (Exception e) { @@ -125,7 +125,7 @@ public void setLowSpeedColor(View view) { } public void setMediumSpeedColor(View view) { - EditText mediumSpeedColor = (EditText) findViewById(R.id.mediumSpeedColor); + EditText mediumSpeedColor = findViewById(R.id.mediumSpeedColor); try{ speedView.setMediumSpeedColor(Color.parseColor(mediumSpeedColor.getText().toString())); } catch (Exception e) { @@ -134,7 +134,7 @@ public void setMediumSpeedColor(View view) { } public void setHighSpeedColor(View view) { - EditText highSpeedColor = (EditText) findViewById(R.id.highSpeedColor); + EditText highSpeedColor = findViewById(R.id.highSpeedColor); try{ speedView.setHighSpeedColor(Color.parseColor(highSpeedColor.getText().toString())); } catch (Exception e) { diff --git a/app/src/main/java/com/github/anastr/speedview/CreateProgrammatically.java b/app/src/main/java/com/github/anastr/speedview/CreateProgrammatically.java index b36467a..c09e035 100644 --- a/app/src/main/java/com/github/anastr/speedview/CreateProgrammatically.java +++ b/app/src/main/java/com/github/anastr/speedview/CreateProgrammatically.java @@ -35,11 +35,11 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_create_programmatically); - rootSpeedometer = (LinearLayout) findViewById(R.id.root_speedometer); + rootSpeedometer = findViewById(R.id.root_speedometer); - seekBar = (SeekBar) findViewById(R.id.seekBar); - ok = (Button) findViewById(R.id.ok); - textSpeed = (TextView) findViewById(R.id.textSpeed); + seekBar = findViewById(R.id.seekBar); + ok = findViewById(R.id.ok); + textSpeed = findViewById(R.id.textSpeed); ok.setOnClickListener(new View.OnClickListener() { @Override diff --git a/app/src/main/java/com/github/anastr/speedview/DeluxeSpeedActivity.java b/app/src/main/java/com/github/anastr/speedview/DeluxeSpeedActivity.java index 3c22a6f..cd4325e 100644 --- a/app/src/main/java/com/github/anastr/speedview/DeluxeSpeedActivity.java +++ b/app/src/main/java/com/github/anastr/speedview/DeluxeSpeedActivity.java @@ -26,12 +26,12 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_deluxe_speed); - deluxeSpeedView = (DeluxeSpeedView) findViewById(R.id.deluxeSpeedView); - seekBar = (SeekBar) findViewById(R.id.seekBar); - ok = (Button) findViewById(R.id.ok); - textSpeed = (TextView) findViewById(R.id.textSpeed); - withTremble = (CheckBox) findViewById(R.id.withTremble); - withEffects = (CheckBox) findViewById(R.id.withEffects); + deluxeSpeedView = findViewById(R.id.deluxeSpeedView); + seekBar = findViewById(R.id.seekBar); + ok = findViewById(R.id.ok); + textSpeed = findViewById(R.id.textSpeed); + withTremble = findViewById(R.id.withTremble); + withEffects = findViewById(R.id.withEffects); ok.setOnClickListener(new View.OnClickListener() { @Override diff --git a/app/src/main/java/com/github/anastr/speedview/ImageSpeedometerActivity.java b/app/src/main/java/com/github/anastr/speedview/ImageSpeedometerActivity.java index 72372a4..b0bbdae 100644 --- a/app/src/main/java/com/github/anastr/speedview/ImageSpeedometerActivity.java +++ b/app/src/main/java/com/github/anastr/speedview/ImageSpeedometerActivity.java @@ -23,10 +23,10 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_image_speedometer); - imageSpeedometer = (ImageSpeedometer) findViewById(R.id.imageSpeedometer); - seekBar = (SeekBar) findViewById(R.id.seekBar); - ok = (Button) findViewById(R.id.ok); - textSpeed = (TextView) findViewById(R.id.textSpeed); + imageSpeedometer = findViewById(R.id.imageSpeedometer); + seekBar = findViewById(R.id.seekBar); + ok = findViewById(R.id.ok); + textSpeed = findViewById(R.id.textSpeed); ok.setOnClickListener(new View.OnClickListener() { @Override diff --git a/app/src/main/java/com/github/anastr/speedview/MainActivity.java b/app/src/main/java/com/github/anastr/speedview/MainActivity.java index 7e5b57f..7bc4fa4 100644 --- a/app/src/main/java/com/github/anastr/speedview/MainActivity.java +++ b/app/src/main/java/com/github/anastr/speedview/MainActivity.java @@ -18,7 +18,7 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); - ListView listView = (ListView) findViewById(R.id.list); + ListView listView = findViewById(R.id.list); String[] values = new String[] { "1. Speed View", diff --git a/app/src/main/java/com/github/anastr/speedview/PointerActivity.java b/app/src/main/java/com/github/anastr/speedview/PointerActivity.java index 19ee751..6cd1ae0 100644 --- a/app/src/main/java/com/github/anastr/speedview/PointerActivity.java +++ b/app/src/main/java/com/github/anastr/speedview/PointerActivity.java @@ -25,11 +25,11 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_pointer); - pointerSpeedometer = (PointerSpeedometer) findViewById(R.id.pointerSpeedometer); - seekBarSpeed = (SeekBar) findViewById(R.id.seekBarSpeed); - ok = (Button) findViewById(R.id.ok); - textSpeed = (TextView) findViewById(R.id.textSpeed); - textSpeedChange = (TextView) findViewById(R.id.textSpeedChange); + pointerSpeedometer = findViewById(R.id.pointerSpeedometer); + seekBarSpeed = findViewById(R.id.seekBarSpeed); + ok = findViewById(R.id.ok); + textSpeed = findViewById(R.id.textSpeed); + textSpeedChange = findViewById(R.id.textSpeedChange); ok.setOnClickListener(new View.OnClickListener() { @Override diff --git a/app/src/main/java/com/github/anastr/speedview/RayActivity.java b/app/src/main/java/com/github/anastr/speedview/RayActivity.java index 6f7fb63..fd0a69b 100644 --- a/app/src/main/java/com/github/anastr/speedview/RayActivity.java +++ b/app/src/main/java/com/github/anastr/speedview/RayActivity.java @@ -23,14 +23,14 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ray); - raySpeedometer = (RaySpeedometer) findViewById(R.id.raySpeedometer); - seekBarSpeed = (SeekBar) findViewById(R.id.seekBarSpeed); - seekBarDegree = (SeekBar) findViewById(R.id.seekBarDegree); - seekBarWidth = (SeekBar) findViewById(R.id.seekBarWidth); - ok = (Button) findViewById(R.id.ok); - textSpeed = (TextView) findViewById(R.id.textSpeed); - textDegree = (TextView) findViewById(R.id.textDegree); - textWidth = (TextView) findViewById(R.id.textWidth); + raySpeedometer = findViewById(R.id.raySpeedometer); + seekBarSpeed = findViewById(R.id.seekBarSpeed); + seekBarDegree = findViewById(R.id.seekBarDegree); + seekBarWidth = findViewById(R.id.seekBarWidth); + ok = findViewById(R.id.ok); + textSpeed = findViewById(R.id.textSpeed); + textDegree = findViewById(R.id.textDegree); + textWidth = findViewById(R.id.textWidth); ok.setOnClickListener(new View.OnClickListener() { @Override diff --git a/app/src/main/java/com/github/anastr/speedview/SpeedTextPositionActivity.java b/app/src/main/java/com/github/anastr/speedview/SpeedTextPositionActivity.java index e02e02a..5b29b77 100644 --- a/app/src/main/java/com/github/anastr/speedview/SpeedTextPositionActivity.java +++ b/app/src/main/java/com/github/anastr/speedview/SpeedTextPositionActivity.java @@ -21,12 +21,12 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_speed_text_position); - speedometer = (Speedometer) findViewById(R.id.speedometer); + speedometer = findViewById(R.id.speedometer); assert speedometer != null; speedometer.speedTo(40); - Spinner spinner = (Spinner) findViewById(R.id.spinner); + Spinner spinner = findViewById(R.id.spinner); assert spinner != null; spinner.setOnItemSelectedListener(this); @@ -41,7 +41,7 @@ protected void onCreate(Bundle savedInstanceState) { categories.add("BOTTOM_CENTER"); categories.add("BOTTOM_RIGHT"); - ArrayAdapter dataAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, categories); + ArrayAdapter dataAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, categories); spinner.setAdapter(dataAdapter); spinner.setSelection(7); } diff --git a/app/src/main/java/com/github/anastr/speedview/SpeedViewActivity.java b/app/src/main/java/com/github/anastr/speedview/SpeedViewActivity.java index 504c951..4808930 100644 --- a/app/src/main/java/com/github/anastr/speedview/SpeedViewActivity.java +++ b/app/src/main/java/com/github/anastr/speedview/SpeedViewActivity.java @@ -24,10 +24,10 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_speed_view); - speedView = (SpeedView) findViewById(R.id.speedView); - seekBar = (SeekBar) findViewById(R.id.seekBar); - ok = (Button) findViewById(R.id.ok); - textSpeed = (TextView) findViewById(R.id.textSpeed); + speedView = findViewById(R.id.speedView); + seekBar = findViewById(R.id.seekBar); + ok = findViewById(R.id.ok); + textSpeed = findViewById(R.id.textSpeed); ok.setOnClickListener(new View.OnClickListener() { @Override diff --git a/app/src/main/java/com/github/anastr/speedview/StartEndDegreeActivity.java b/app/src/main/java/com/github/anastr/speedview/StartEndDegreeActivity.java index 93492a8..003f914 100644 --- a/app/src/main/java/com/github/anastr/speedview/StartEndDegreeActivity.java +++ b/app/src/main/java/com/github/anastr/speedview/StartEndDegreeActivity.java @@ -20,11 +20,11 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_start_end_degree); - speedometer = (Speedometer) findViewById(R.id.speedometer); - seekBarStartDegree = (SeekBar) findViewById(R.id.seekBarStartDegree); - seekBarEndDegree = (SeekBar) findViewById(R.id.seekBarEndDegree); - textStartDegree = (TextView) findViewById(R.id.textStartDegree); - textEndDegree = (TextView) findViewById(R.id.textEndDegree); + speedometer = findViewById(R.id.speedometer); + seekBarStartDegree = findViewById(R.id.seekBarStartDegree); + seekBarEndDegree = findViewById(R.id.seekBarEndDegree); + textStartDegree = findViewById(R.id.textStartDegree); + textEndDegree = findViewById(R.id.textEndDegree); speedometer.speedPercentTo(50); diff --git a/app/src/main/java/com/github/anastr/speedview/TickActivity.java b/app/src/main/java/com/github/anastr/speedview/TickActivity.java index c9e4dd0..e5585d8 100644 --- a/app/src/main/java/com/github/anastr/speedview/TickActivity.java +++ b/app/src/main/java/com/github/anastr/speedview/TickActivity.java @@ -23,12 +23,12 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_tick); - speedometer = (Speedometer) findViewById(R.id.speedometer); - withRotation = (CheckBox) findViewById(R.id.cb_withRotation); - seekBarTickNumbers = (SeekBar) findViewById(R.id.seekBarStartDegree); - seekBarTickPadding = (SeekBar) findViewById(R.id.seekBarTickPadding); - textTicks = (TextView) findViewById(R.id.textTickNumber); - textTickPadding = (TextView) findViewById(R.id.textTickPadding); + speedometer = findViewById(R.id.speedometer); + withRotation = findViewById(R.id.cb_withRotation); + seekBarTickNumbers = findViewById(R.id.seekBarStartDegree); + seekBarTickPadding = findViewById(R.id.seekBarTickPadding); + textTicks = findViewById(R.id.textTickNumber); + textTickPadding = findViewById(R.id.textTickPadding); speedometer.speedPercentTo(53); diff --git a/app/src/main/java/com/github/anastr/speedview/TubeSpeedometerActivity.java b/app/src/main/java/com/github/anastr/speedview/TubeSpeedometerActivity.java index ea39864..514cec7 100644 --- a/app/src/main/java/com/github/anastr/speedview/TubeSpeedometerActivity.java +++ b/app/src/main/java/com/github/anastr/speedview/TubeSpeedometerActivity.java @@ -23,10 +23,10 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_tube_speedometer); - tubeSpeedometer = (TubeSpeedometer) findViewById(R.id.speedometer); - seekBar = (SeekBar) findViewById(R.id.seekBar); - ok = (Button) findViewById(R.id.ok); - textSpeed = (TextView) findViewById(R.id.textSpeed); + tubeSpeedometer = findViewById(R.id.speedometer); + seekBar = findViewById(R.id.seekBar); + ok = findViewById(R.id.ok); + textSpeed = findViewById(R.id.textSpeed); ok.setOnClickListener(new View.OnClickListener() { @Override diff --git a/app/src/main/java/com/github/anastr/speedview/WorkWithIndicatorActivity.java b/app/src/main/java/com/github/anastr/speedview/WorkWithIndicatorActivity.java index 804be56..275c071 100644 --- a/app/src/main/java/com/github/anastr/speedview/WorkWithIndicatorActivity.java +++ b/app/src/main/java/com/github/anastr/speedview/WorkWithIndicatorActivity.java @@ -27,13 +27,13 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_work_with_indicator); - speedometer = (Speedometer) findViewById(R.id.speedometer); - textWidth = (TextView) findViewById(R.id.textWidth); + speedometer = findViewById(R.id.speedometer); + textWidth = findViewById(R.id.textWidth); assert speedometer != null; speedometer.speedTo(40); - Spinner spinner = (Spinner) findViewById(R.id.spinner); + Spinner spinner = findViewById(R.id.spinner); assert spinner != null; spinner.setOnItemSelectedListener(this); @@ -53,7 +53,7 @@ protected void onCreate(Bundle savedInstanceState) { spinner.setAdapter(dataAdapter); spinner.setSelection(1); - SeekBar seekBarWidth = (SeekBar) findViewById(R.id.seekBar); + SeekBar seekBarWidth = findViewById(R.id.seekBar); assert seekBarWidth != null; seekBarWidth.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override diff --git a/app/src/main/java/com/github/anastr/speedview/WorkWithModesActivity.java b/app/src/main/java/com/github/anastr/speedview/WorkWithModesActivity.java index aaaeefd..c3c12d0 100644 --- a/app/src/main/java/com/github/anastr/speedview/WorkWithModesActivity.java +++ b/app/src/main/java/com/github/anastr/speedview/WorkWithModesActivity.java @@ -21,12 +21,12 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_work_with_modes); - speedometer = (Speedometer) findViewById(R.id.speedometer); + speedometer = findViewById(R.id.speedometer); assert speedometer != null; speedometer.speedTo(40); - Spinner spinner = (Spinner) findViewById(R.id.spinner); + Spinner spinner = findViewById(R.id.spinner); assert spinner != null; spinner.setOnItemSelectedListener(this); @@ -41,7 +41,7 @@ protected void onCreate(Bundle savedInstanceState) { categories.add("BOTTOM_RIGHT"); categories.add("BOTTOM_LEFT"); - ArrayAdapter dataAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, categories); + ArrayAdapter dataAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, categories); spinner.setAdapter(dataAdapter); spinner.setSelection(0); } diff --git a/app/src/main/java/com/github/anastr/speedview/WorkWithNoteActivity.java b/app/src/main/java/com/github/anastr/speedview/WorkWithNoteActivity.java index 7c45474..b5314cd 100644 --- a/app/src/main/java/com/github/anastr/speedview/WorkWithNoteActivity.java +++ b/app/src/main/java/com/github/anastr/speedview/WorkWithNoteActivity.java @@ -31,10 +31,10 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_work_with_note); - speedView = (SpeedView) findViewById(R.id.speedView); - seekBar = (SeekBar) findViewById(R.id.seekBar); - ok = (Button) findViewById(R.id.ok); - textSpeed = (TextView) findViewById(R.id.textSpeed); + speedView = findViewById(R.id.speedView); + seekBar = findViewById(R.id.seekBar); + ok = findViewById(R.id.ok); + textSpeed = findViewById(R.id.textSpeed); ok.setOnClickListener(new View.OnClickListener() { @Override diff --git a/app/src/main/res/layout/activity_pointer.xml b/app/src/main/res/layout/activity_pointer.xml index 174cd66..eb94d68 100644 --- a/app/src/main/res/layout/activity_pointer.xml +++ b/app/src/main/res/layout/activity_pointer.xml @@ -8,7 +8,7 @@ android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" - android:background="#83f11b" + android:background="#7be11b" android:orientation="vertical" tools:context="com.github.anastr.speedview.PointerActivity"> @@ -17,7 +17,7 @@ android:layout_width="300dp" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" - app:sv_backgroundCircleColor="#83f11b" + app:sv_backgroundCircleColor="#7be11b" app:sv_speedometerColor="#00ccff" app:sv_pointerColor="#f00" app:sv_unitTextSize="15sp" diff --git a/build.gradle b/build.gradle index ea1cca6..be54db2 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:3.0.0' + classpath 'com.android.tools.build:gradle:3.0.1' classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3' classpath "com.github.dcendents:android-maven-gradle-plugin:1.4.1" diff --git a/speedviewlib/build.gradle b/speedviewlib/build.gradle index 27964f8..c3a857e 100644 --- a/speedviewlib/build.gradle +++ b/speedviewlib/build.gradle @@ -3,12 +3,12 @@ apply plugin: 'com.jfrog.bintray' apply plugin: 'com.github.dcendents.android-maven' android { - compileSdkVersion 26 - buildToolsVersion '26.0.2' + compileSdkVersion 27 + buildToolsVersion '27.0.0' defaultConfig { minSdkVersion 8 - targetSdkVersion 26 + targetSdkVersion 27 versionCode 1 versionName "1.0" } @@ -49,7 +49,7 @@ Properties properties = new Properties() properties.load(project.rootProject.file('local.properties').newDataInputStream()) group = 'com.github.anastr' -version = '1.1.6' +version = '1.1.7' bintray { user = properties.getProperty("bintray.user") diff --git a/speedviewlib/src/main/java/com/github/anastr/speedviewlib/AwesomeSpeedometer.java b/speedviewlib/src/main/java/com/github/anastr/speedviewlib/AwesomeSpeedometer.java index cb8470d..e2e175f 100644 --- a/speedviewlib/src/main/java/com/github/anastr/speedviewlib/AwesomeSpeedometer.java +++ b/speedviewlib/src/main/java/com/github/anastr/speedviewlib/AwesomeSpeedometer.java @@ -29,8 +29,6 @@ public class AwesomeSpeedometer extends Speedometer { private int speedometerColor = 0xff00e6e6; - private float triangleHeight = 0f; - public AwesomeSpeedometer(Context context) { this(context, null); } @@ -110,14 +108,11 @@ private void updateGradient() { private void initDraw() { ringPaint.setStrokeWidth(getSpeedometerWidth()); markPaint.setColor(getMarkColor()); - textPaint.setColor(getTextColor()); - textPaint.setTextSize(getTextSize()); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); - initDraw(); drawSpeedUnitText(canvas); drawIndicator(canvas); @@ -135,7 +130,7 @@ protected void updateBackgroundBitmap() { markPath.lineTo(getSize() *.5f, markH + getPadding()); markPaint.setStrokeWidth(markH/5f); - triangleHeight = getViewSizePa()/20f; + float triangleHeight = getViewSizePa() / 20f; setInitTickPadding(triangleHeight); trianglesPath.reset(); diff --git a/speedviewlib/src/main/java/com/github/anastr/speedviewlib/DeluxeSpeedView.java b/speedviewlib/src/main/java/com/github/anastr/speedviewlib/DeluxeSpeedView.java index 199b863..a6938f0 100644 --- a/speedviewlib/src/main/java/com/github/anastr/speedviewlib/DeluxeSpeedView.java +++ b/speedviewlib/src/main/java/com/github/anastr/speedviewlib/DeluxeSpeedView.java @@ -107,7 +107,6 @@ private void initDraw() { @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); - initDraw(); RectF speedBackgroundRect = getSpeedUnitTextBounds(); speedBackgroundRect.left -= 2; diff --git a/speedviewlib/src/main/java/com/github/anastr/speedviewlib/Gauge.java b/speedviewlib/src/main/java/com/github/anastr/speedviewlib/Gauge.java index 0f1fd75..9d8adac 100644 --- a/speedviewlib/src/main/java/com/github/anastr/speedviewlib/Gauge.java +++ b/speedviewlib/src/main/java/com/github/anastr/speedviewlib/Gauge.java @@ -54,7 +54,7 @@ public abstract class Gauge extends View { /** what is speed now in int */ private int currentIntSpeed = 0; /** what is speed now in float */ - private float currentSpeed = 0f; + private float currentSpeed = minSpeed; /** a degree to increases and decreases the indicator around correct speed */ private float trembleDegree = 4f; private int trembleDuration = 1000; @@ -107,6 +107,7 @@ public abstract class Gauge extends View { private float speedTextPadding = dpTOpx(20f); private boolean unitUnderSpeedText = false; private Bitmap speedUnitTextBitmap; + private Canvas speedUnitTextCanvas; /** draw speed text as integer .*/ public static final byte INTEGER_FORMAT = 0; @@ -172,6 +173,8 @@ private void initAttributeSet(Context context, AttributeSet attrs) { maxSpeed = a.getInt(R.styleable.Gauge_sv_maxSpeed, maxSpeed); minSpeed = a.getInt(R.styleable.Gauge_sv_minSpeed, minSpeed); + speed = minSpeed; + currentSpeed = minSpeed; withTremble = a.getBoolean(R.styleable.Gauge_sv_withTremble, withTremble); textPaint.setColor(a.getColor(R.styleable.Gauge_sv_textColor, textPaint.getColor())); textPaint.setTextSize(a.getDimension(R.styleable.Gauge_sv_textSize, textPaint.getTextSize())); @@ -219,13 +222,16 @@ private void initAttributeValue() { speedTextPaint.setTextAlign(Paint.Align.LEFT); unitTextPaint.setTextAlign(Paint.Align.LEFT); } - recreateSpeedUnitTextBitmap(); } @Override protected void onSizeChanged(int w, int h, int oldW, int oldH) { super.onSizeChanged(w, h, oldW, oldH); setPadding(getPaddingLeft(), getPaddingTop(), getPaddingRight(), getPaddingBottom()); + if (widthPa > 0 && heightPa > 0) + speedUnitTextBitmap = Bitmap.createBitmap(widthPa + , heightPa, Bitmap.Config.ARGB_8888); + speedUnitTextCanvas = new Canvas(speedUnitTextBitmap); } private void checkSpeedometerPercent() { @@ -304,21 +310,19 @@ protected void onDraw(Canvas canvas) { // check onSpeedChangeEvent. int newSpeed = (int) currentSpeed; - if (newSpeed != currentIntSpeed) { - if (onSpeedChangeListener != null) { - boolean byTremble = Build.VERSION.SDK_INT >= 11 && trembleAnimator.isRunning(); - boolean isSpeedUp = newSpeed > currentIntSpeed; - int update = isSpeedUp ? 1 : -1; - // this loop to pass on all speed values, - // to safe handle by call gauge.getCorrectIntSpeed(). - while (currentIntSpeed != newSpeed) { - currentIntSpeed += update; - onSpeedChangeListener.onSpeedChange(this, isSpeedUp, byTremble); - } + if (newSpeed != currentIntSpeed && onSpeedChangeListener != null) { + boolean byTremble = Build.VERSION.SDK_INT >= 11 && trembleAnimator.isRunning(); + boolean isSpeedUp = newSpeed > currentIntSpeed; + int update = isSpeedUp ? 1 : -1; + // this loop to pass on all speed values, + // to safe handle by call gauge.getCorrectIntSpeed(). + while (currentIntSpeed != newSpeed) { + currentIntSpeed += update; + onSpeedChangeListener.onSpeedChange(this, isSpeedUp, byTremble); } - else - currentIntSpeed = newSpeed; } + currentIntSpeed = newSpeed; + // check onSectionChangeEvent. byte newSection = getSection(); if (section != newSection) @@ -333,48 +337,38 @@ protected void onDraw(Canvas canvas) { */ protected void drawSpeedUnitText(Canvas canvas) { RectF r = getSpeedUnitTextBounds(); - canvas.drawBitmap(updateSpeedUnitTextBitmap(), r.left, r.top, speedUnitTextBitmapPaint); - } - - /** - * fixable method to create {@link #speedUnitTextBitmap} - * to avoid create it every frame in {@code onDraw} method. - */ - private void recreateSpeedUnitTextBitmap() { - speedUnitTextBitmap = Bitmap.createBitmap((int) getMaxWidthForSpeedUnitText() - , (int) getSpeedUnitTextHeight(), Bitmap.Config.ARGB_8888); + updateSpeedUnitTextBitmap(getSpeedText()); + canvas.drawBitmap(speedUnitTextBitmap, r.left - speedUnitTextBitmap.getWidth() *.5f + r.width() *.5f + , r.top - speedUnitTextBitmap.getHeight() *.5f + r.height() *.5f, speedUnitTextBitmapPaint); } /** * clear {@link #speedUnitTextBitmap} and draw speed and unit Text * taking into consideration {@link #speedometerTextRightToLeft} and {@link #unitUnderSpeedText}. - * @return {@link #speedUnitTextBitmap} after update. */ - private Bitmap updateSpeedUnitTextBitmap() { + private void updateSpeedUnitTextBitmap(String speedText) { speedUnitTextBitmap.eraseColor(Color.TRANSPARENT); - Canvas c = new Canvas(speedUnitTextBitmap); if (unitUnderSpeedText) { - c.drawText(getSpeedText(), speedUnitTextBitmap.getWidth() *.5f - , speedTextPaint.getTextSize(), speedTextPaint); - c.drawText(unit, speedUnitTextBitmap.getWidth() *.5f - , speedTextPaint.getTextSize() + unitSpeedInterval + unitTextPaint.getTextSize(), unitTextPaint); - return speedUnitTextBitmap; + speedUnitTextCanvas.drawText(speedText, speedUnitTextBitmap.getWidth() *.5f + , speedUnitTextBitmap.getHeight() *.5f - unitSpeedInterval *.5f, speedTextPaint); + speedUnitTextCanvas.drawText(unit, speedUnitTextBitmap.getWidth() *.5f + , speedUnitTextBitmap.getHeight() *.5f + unitTextPaint.getTextSize() + unitSpeedInterval *.5f, unitTextPaint); } else { float speedX; float unitX; if (isSpeedometerTextRightToLeft()) { - speedX = unitTextPaint.measureText(unit) + unitSpeedInterval; - unitX = 0f; + unitX = speedUnitTextBitmap.getWidth() *.5f - getSpeedUnitTextWidth() *.5f; + speedX = unitX + unitTextPaint.measureText(unit) + unitSpeedInterval; } else { - speedX = 0f; - unitX = speedTextPaint.measureText(getSpeedText()) + unitSpeedInterval; + speedX = speedUnitTextBitmap.getWidth() *.5f - getSpeedUnitTextWidth() *.5f; + unitX = speedX + speedTextPaint.measureText(speedText) + unitSpeedInterval; } - c.drawText(getSpeedText(), speedX, c.getHeight() - .15f, speedTextPaint); - c.drawText(unit, unitX, c.getHeight() - .15f, unitTextPaint); - return speedUnitTextBitmap; + float h = speedUnitTextBitmap.getHeight() *.5f + getSpeedUnitTextHeight() *.5f; + speedUnitTextCanvas.drawText(speedText, speedX, h, speedTextPaint); + speedUnitTextCanvas.drawText(unit, unitX, h, unitTextPaint); } } @@ -384,24 +378,16 @@ private Bitmap updateSpeedUnitTextBitmap() { */ protected RectF getSpeedUnitTextBounds() { float left = getWidthPa()*speedTextPosition.x -translatedDx + padding - - speedUnitTextBitmap.getWidth()*speedTextPosition.width + - getSpeedUnitTextWidth()*speedTextPosition.width + speedTextPadding*speedTextPosition.paddingH; float top = getHeightPa()*speedTextPosition.y -translatedDy + padding - - speedUnitTextBitmap.getHeight()*speedTextPosition.height + - getSpeedUnitTextHeight()*speedTextPosition.height + speedTextPadding*speedTextPosition.paddingV; return new RectF(left, top, left + getSpeedUnitTextWidth(), top + getSpeedUnitTextHeight()); } - private float getMaxWidthForSpeedUnitText() { - String maxSpeedText = speedTextFormat == FLOAT_FORMAT ? String.format(locale, "%.1f", (float)maxSpeed) - : String.format(locale, "%d", maxSpeed); - return unitUnderSpeedText ? - Math.max(speedTextPaint.measureText(maxSpeedText), unitTextPaint.measureText(unit)) - : speedTextPaint.measureText(maxSpeedText) + unitTextPaint.measureText(unit) + unitSpeedInterval; - } - /** - * @return the width of speed & unit text. + * @return the width of speed & unit text at runtime. */ private float getSpeedUnitTextWidth() { return unitUnderSpeedText ? @@ -410,7 +396,7 @@ private float getSpeedUnitTextWidth() { } /** - * @return the height of speed & unit text. + * @return the height of speed & unit text at runtime. */ private float getSpeedUnitTextHeight() { return unitUnderSpeedText ? @@ -787,7 +773,6 @@ public byte getSpeedTextFormat() { */ public void setSpeedTextFormat(byte speedTextFormat) { this.speedTextFormat = speedTextFormat; - recreateSpeedUnitTextBitmap(); if (!attachedToWindow) return; updateBackgroundBitmap(); @@ -933,7 +918,6 @@ public void setMinMaxSpeed(int minSpeed, int maxSpeed) { cancelSpeedAnimator(); this.minSpeed = minSpeed; this.maxSpeed = maxSpeed; - recreateSpeedUnitTextBitmap(); if (!attachedToWindow) return; updateBackgroundBitmap(); @@ -1058,7 +1042,6 @@ public float getSpeedTextSize() { */ public void setSpeedTextSize(float speedTextSize) { speedTextPaint.setTextSize(speedTextSize); - recreateSpeedUnitTextBitmap(); if (!attachedToWindow) return; invalidate(); @@ -1081,7 +1064,6 @@ public float getUnitTextSize() { */ public void setUnitTextSize(float unitTextSize) { unitTextPaint.setTextSize(unitTextSize); - recreateSpeedUnitTextBitmap(); if (!attachedToWindow) return; updateBackgroundBitmap(); @@ -1101,7 +1083,6 @@ public String getUnit() { */ public void setUnit(String unit) { this.unit = unit; - recreateSpeedUnitTextBitmap(); if (!attachedToWindow) return; invalidate(); @@ -1415,7 +1396,6 @@ public float getUnitSpeedInterval() { */ public void setUnitSpeedInterval(float unitSpeedInterval) { this.unitSpeedInterval = unitSpeedInterval; - recreateSpeedUnitTextBitmap(); if (!attachedToWindow) return; updateBackgroundBitmap(); @@ -1463,7 +1443,6 @@ public void setUnitUnderSpeedText(boolean unitUnderSpeedText) { speedTextPaint.setTextAlign(Paint.Align.LEFT); unitTextPaint.setTextAlign(Paint.Align.LEFT); } - recreateSpeedUnitTextBitmap(); if (!attachedToWindow) return; updateBackgroundBitmap(); diff --git a/speedviewlib/src/main/java/com/github/anastr/speedviewlib/SpeedView.java b/speedviewlib/src/main/java/com/github/anastr/speedviewlib/SpeedView.java index 8a12919..ad5b3dc 100644 --- a/speedviewlib/src/main/java/com/github/anastr/speedviewlib/SpeedView.java +++ b/speedviewlib/src/main/java/com/github/anastr/speedviewlib/SpeedView.java @@ -78,7 +78,6 @@ private void initDraw() { @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); - initDraw(); drawSpeedUnitText(canvas); diff --git a/speedviewlib/src/main/java/com/github/anastr/speedviewlib/Speedometer.java b/speedviewlib/src/main/java/com/github/anastr/speedviewlib/Speedometer.java index b6b723e..b2956d5 100644 --- a/speedviewlib/src/main/java/com/github/anastr/speedviewlib/Speedometer.java +++ b/speedviewlib/src/main/java/com/github/anastr/speedviewlib/Speedometer.java @@ -111,7 +111,29 @@ private void initAttributeValue() { @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); - int size = Math.min(getMeasuredWidth(), getMeasuredHeight()); + + int defaultSize = (int) dpTOpx(250f); + + int widthMode = MeasureSpec.getMode(widthMeasureSpec); + int heightMode = MeasureSpec.getMode(heightMeasureSpec); + + int size; + + if (widthMode == MeasureSpec.EXACTLY) + size = getMeasuredWidth(); + else if (heightMode == MeasureSpec.EXACTLY) + size = getMeasuredHeight(); + else if (widthMode == MeasureSpec.UNSPECIFIED && heightMode == MeasureSpec.UNSPECIFIED) + size = defaultSize; + else if (widthMode == MeasureSpec.AT_MOST && heightMode == MeasureSpec.AT_MOST) + size = Math.min(defaultSize, Math.min(getMeasuredWidth(), getMeasuredHeight())); + else { + if (widthMode == MeasureSpec.AT_MOST) + size = Math.min(defaultSize, getMeasuredWidth()); + else + size = Math.min(defaultSize, getMeasuredHeight()); + } + int newW = size / speedometerMode.divWidth; int newH = size / speedometerMode.divHeight; if (speedometerMode.isHalf) {