Я начал изучать растровые изображения и простую графику в Android. Я немного новичок в этом, поэтому я все еще пытаюсь понять концепции. Мой код приведен ниже. Он работает с растровым и рисованным. Я получил его, чтобы отобразить изображение треугольника. Но у меня есть пара вопросов: Во-первых: изображение треугольника отображает - но его основание растягивается в нижней части экрана. Как это исправить? Второе: как отобразить треугольник в центре экрана?Вопросы об обучении Android
Мой код (взято из vogella.com):
Класс для вытяжке:
public class MyRoundCornerDrawable extends Drawable {
private Paint paint;
public MyRoundCornerDrawable(Bitmap bitmap){
BitmapShader shader;
shader = new BitmapShader(bitmap, Shader.TileMode.CLAMP,
Shader.TileMode.CLAMP);
paint = new Paint();
paint.setAntiAlias(true);
paint.setShader(shader);
}
@Override
public void draw(Canvas canvas) {
int height = getBounds().height();
int width = getBounds().width();
RectF rect = new RectF(0.0f, 0.0f, width, height);
canvas.drawRoundRect(rect, 15, 15, paint);
}
@Override
public int getOpacity() {
return 255;
}
@Override
public void setAlpha(int alpha) {
}
@Override
public void setColorFilter(ColorFilter arg0) {
}
}
MainActivity
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView button = (ImageView) findViewById(R.id.image);
InputStream resource = getResources().openRawResource(R.drawable.triangle);
Bitmap bitmap = BitmapFactory.decodeStream(resource);
button.setBackground(new MyRoundCornerDrawable(bitmap));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
И XML :
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<ImageView
android:id="@+id/image"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:contentDescription="TODO" />
Вопросы о scaleType: Что такое правильный синтаксис (я использовал: button.setScaleType (scaleType) - это не Работа). И где я должен его разместить? Я поместил его в onCreate. – David
см. Мое редактирование ..... – Blackbelt
ok. но как насчет scaleType? Просто использование layout_centerInParent не имеет значения. – David