Android 中的 ImageView ScaleType 示例
ScaleType 用于将图像边界统一缩放到 ImageView。 Android ImageView 为不同的配置提供了各种类型的 ScaleType。
- 中央
- CENTER_CROP
- CENTER_INSIDE
- FIT_CENTER
- FIT_END
- FIT_START
- FIT_XY
- 矩阵
现在,我们将详细了解这些 ScaleType。为了探索这些比例类型,我们将使用 GeeksforGeeks 徽标作为我们的图像资源,并将 ImageView 的背景颜色设置为黑色以供参考。
1. 中心
这种比例类型将使图像在视图内居中。但是,它不会对图像执行任何缩放。下面是 CENTER 比例类型的代码。
XML
XML
XML
XML
XML
XML
XML
XML
XML
#0F9D58
#16E37F
#03DAC5
XML
Java
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private ImageView img;
private Button center, center_crop, center_inside, fit_center, fit_end, fit_start, fit_xy, matrix;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Initializing method..
init();
}
private void init(){
img = findViewById(R.id.st_image);
center = findViewById(R.id.st_center);
center.setOnClickListener((View.OnClickListener) this);
center_crop = findViewById(R.id.st_center_crop);
center_crop.setOnClickListener((View.OnClickListener) this);
center_inside = findViewById(R.id.st_center_inside);
center_inside.setOnClickListener((View.OnClickListener) this);
fit_center = findViewById(R.id.st_fit_center);
fit_center.setOnClickListener((View.OnClickListener) this);
fit_end = findViewById(R.id.st_fit_end);
fit_end.setOnClickListener((View.OnClickListener) this);
fit_start = findViewById(R.id.st_fit_start);
fit_start.setOnClickListener((View.OnClickListener) this);
fit_xy = findViewById(R.id.st_fit_xy);
fit_xy.setOnClickListener((View.OnClickListener) this);
matrix = findViewById(R.id.st_matrix);
matrix.setOnClickListener((View.OnClickListener) this);
}
public void onClick(View view){
switch (view.getId()){
case R.id.st_center:
img.setScaleType(ImageView.ScaleType.CENTER);
Toast.makeText(this, "SCALE TYPE - CENTER", Toast.LENGTH_SHORT).show();
break;
case R.id.st_center_crop:
img.setScaleType(ImageView.ScaleType.CENTER_CROP);
Toast.makeText(this, "SCALE TYPE - CENTER_CROP", Toast.LENGTH_SHORT).show();
break;
case R.id.st_center_inside:
img.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
Toast.makeText(this, "SCALE TYPE - CENTER_INSIDE", Toast.LENGTH_SHORT).show();
break;
case R.id.st_fit_center:
img.setScaleType(ImageView.ScaleType.FIT_CENTER);
Toast.makeText(this, "SCALE TYPE - FIT_CENTER", Toast.LENGTH_SHORT).show();
break;
case R.id.st_fit_end:
img.setScaleType(ImageView.ScaleType.FIT_END);
Toast.makeText(this, "SCALE TYPE - FIT_END", Toast.LENGTH_SHORT).show();
break;
case R.id.st_fit_start:
img.setScaleType(ImageView.ScaleType.FIT_START);
Toast.makeText(this, "SCALE TYPE - FIT_START", Toast.LENGTH_SHORT).show();
break;
case R.id.st_fit_xy:
img.setScaleType(ImageView.ScaleType.FIT_XY);
Toast.makeText(this, "SCALE TYPE - FIT_XY", Toast.LENGTH_SHORT).show();
break;
case R.id.st_matrix:
img.setScaleType(ImageView.ScaleType.MATRIX);
Toast.makeText(this, "SCALE TYPE - MATRIX", Toast.LENGTH_SHORT).show();
break;
}
}
}
2. CENTER_CROP
这种缩放类型统一缩放图像。即,保持图像的纵横比,以使尺寸(宽度和高度)等于或大于ImageView 尺寸。
XML
3. CENTER_INSIDE
CENTER_INSIDE 将 ImageView 容器内的图像居中。此比例类型与图像边缘与视图边缘不匹配。
XML
4. FIT_CENTER
它将从中心缩放图像。 FIT_CENTER 确保图像完全适合 ImageView 并且图像的垂直或水平轴将与视图完全相同。
XML
5. FIT_END
它用于将图像文件缩放到视图(ImageView)的末尾。这种缩放类型从容器的末端缩放图像。
XML
6. FIT_START
这用于将图像缩放到容器的开头。 FIT_START从容器开始缩放图像。
XML
7. FIT_XY
FIT_XY 使用填充属性完成缩放。它将从 ImageView 的 X 和 Y 坐标填充图像。
XML
8.矩阵
它用于在绘图时使用图像矩阵对图像进行缩放。建议在您想要自定义旋转图像或缩放图像等方式时使用。
XML
例子
在本例中,我们将使用按钮的单击事件监听器上的各种缩放类型属性进行缩放,并显示具有各种缩放类型的图像,并为缩放类型的名称发送消息。
第 1 步:创建一个新项目
要在 Android Studio 中创建新项目,请参阅如何在 Android Studio 中创建/启动新项目。请注意,选择Java作为编程语言。
第 2 步:添加资源
在继续之前,我们将在我们的 colors.xml 资源文件中添加以下颜色属性。转到res > values > colors.xml并添加它们。
XML
#0F9D58
#16E37F
#03DAC5
第三步:创建布局文件
在这一步中,我们将为我们的应用程序创建布局。为此,我们使用了各种比例类型的按钮。下面是activity_main.xml文件的代码。
XML
第 4 步:使用 MainActivity。Java
在这一步中,我们将初始化我们的 ImageView 和 Button 并为它们附加一个监听器。侦听器事件完成后,将显示一条关于秤类型名称的 toast 消息。我们还可以使用Java代码设置比例类型。下面是MainActivity 的代码。 Java文件。
Java
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private ImageView img;
private Button center, center_crop, center_inside, fit_center, fit_end, fit_start, fit_xy, matrix;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Initializing method..
init();
}
private void init(){
img = findViewById(R.id.st_image);
center = findViewById(R.id.st_center);
center.setOnClickListener((View.OnClickListener) this);
center_crop = findViewById(R.id.st_center_crop);
center_crop.setOnClickListener((View.OnClickListener) this);
center_inside = findViewById(R.id.st_center_inside);
center_inside.setOnClickListener((View.OnClickListener) this);
fit_center = findViewById(R.id.st_fit_center);
fit_center.setOnClickListener((View.OnClickListener) this);
fit_end = findViewById(R.id.st_fit_end);
fit_end.setOnClickListener((View.OnClickListener) this);
fit_start = findViewById(R.id.st_fit_start);
fit_start.setOnClickListener((View.OnClickListener) this);
fit_xy = findViewById(R.id.st_fit_xy);
fit_xy.setOnClickListener((View.OnClickListener) this);
matrix = findViewById(R.id.st_matrix);
matrix.setOnClickListener((View.OnClickListener) this);
}
public void onClick(View view){
switch (view.getId()){
case R.id.st_center:
img.setScaleType(ImageView.ScaleType.CENTER);
Toast.makeText(this, "SCALE TYPE - CENTER", Toast.LENGTH_SHORT).show();
break;
case R.id.st_center_crop:
img.setScaleType(ImageView.ScaleType.CENTER_CROP);
Toast.makeText(this, "SCALE TYPE - CENTER_CROP", Toast.LENGTH_SHORT).show();
break;
case R.id.st_center_inside:
img.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
Toast.makeText(this, "SCALE TYPE - CENTER_INSIDE", Toast.LENGTH_SHORT).show();
break;
case R.id.st_fit_center:
img.setScaleType(ImageView.ScaleType.FIT_CENTER);
Toast.makeText(this, "SCALE TYPE - FIT_CENTER", Toast.LENGTH_SHORT).show();
break;
case R.id.st_fit_end:
img.setScaleType(ImageView.ScaleType.FIT_END);
Toast.makeText(this, "SCALE TYPE - FIT_END", Toast.LENGTH_SHORT).show();
break;
case R.id.st_fit_start:
img.setScaleType(ImageView.ScaleType.FIT_START);
Toast.makeText(this, "SCALE TYPE - FIT_START", Toast.LENGTH_SHORT).show();
break;
case R.id.st_fit_xy:
img.setScaleType(ImageView.ScaleType.FIT_XY);
Toast.makeText(this, "SCALE TYPE - FIT_XY", Toast.LENGTH_SHORT).show();
break;
case R.id.st_matrix:
img.setScaleType(ImageView.ScaleType.MATRIX);
Toast.makeText(this, "SCALE TYPE - MATRIX", Toast.LENGTH_SHORT).show();
break;
}
}
}
输出: