package
com.example.shapableimageview;
import
androidx.appcompat.app.AppCompatActivity;
import
android.os.Bundle;
import
android.view.View;
import
android.widget.AdapterView;
import
android.widget.ArrayAdapter;
import
android.widget.SeekBar;
import
android.widget.Spinner;
import
com.google.android.material.imageview.ShapeableImageView;
import
com.google.android.material.shape.CornerFamily;
import
java.util.ArrayList;
public
class
MainActivity
extends
AppCompatActivity
implements
SeekBar.OnSeekBarChangeListener {
ShapeableImageView imageView;
Spinner spFamily;
SeekBar sbTopLeft,sbTopRight,sbBottomLeft,sbBottomRight;
int
cornerFamily= CornerFamily.CUT,topLeft=
0
,topRight=
0
,bottomLeft=
0
,bottomRight=
0
;
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView=findViewById(R.id.image_View);
spFamily=findViewById(R.id.sp_family);
sbTopLeft=findViewById(R.id.sb_top_left);
sbTopRight=findViewById(R.id.sb_top_right);
sbBottomLeft=findViewById(R.id.sb_bottom_left);
sbBottomRight=findViewById(R.id.sb_bottom_right);
ArrayList<String> arrayList=
new
ArrayList<>();
arrayList.add(
"cut"
);
arrayList.add(
"rounded"
);
spFamily.setAdapter(
new
ArrayAdapter<>(MainActivity.
this
,
android.R.layout.simple_spinner_dropdown_item,arrayList));
spFamily.setOnItemSelectedListener(
new
AdapterView.OnItemSelectedListener() {
@Override
public
void
onItemSelected(AdapterView<?> parent, View view,
int
position,
long
id) {
if
(position==
0
)
{
cornerFamily=CornerFamily.CUT;
}
else
{
cornerFamily=CornerFamily.ROUNDED;
}
updateImage();
}
@Override
public
void
onNothingSelected(AdapterView<?> parent) {
}
});
sbTopLeft.setOnSeekBarChangeListener(
this
);
sbTopRight.setOnSeekBarChangeListener(
this
);
sbBottomRight.setOnSeekBarChangeListener(
this
);
sbBottomLeft.setOnSeekBarChangeListener(
this
);
}
private
void
updateImage() {
imageView.setShapeAppearanceModel(imageView.getShapeAppearanceModel().toBuilder()
.setTopLeftCorner(cornerFamily,topLeft)
.setTopRightCorner(cornerFamily,topRight)
.setBottomLeftCorner(cornerFamily,bottomLeft)
.setBottomRightCorner(cornerFamily,bottomRight)
.build());
}
@Override
public
void
onProgressChanged(SeekBar seekBar,
int
progress,
boolean
fromUser) {
switch
(seekBar.getId())
{
case
R.id.sb_top_left:
topLeft=progress;
break
;
case
R.id.sb_top_right:
topRight=progress;
break
;
case
R.id.sb_bottom_left:
bottomLeft=progress;
break
;
case
R.id.sb_bottom_right:
bottomRight=progress;
break
;
}
updateImage();
}
@Override
public
void
onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public
void
onStopTrackingTouch(SeekBar seekBar) {
}
}