2013-05-15 3 views
0

Я начал изучать растровые изображения и простую графику в 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" /> 

ответ

0
  1. добавить scaleType для ImageView. fitXYcenter или должны сделать трюк
  2. добавить layout_centerInParent="true" своим ImageView

    <ImageView 
        android:scaleType="center" 
        android:id="@+id/image" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        layout_centerInParent="true" 
        android:contentDescription="TODO" /> 
    
+0

Вопросы о scaleType: Что такое правильный синтаксис (я использовал: button.setScaleType (scaleType) - это не Работа). И где я должен его разместить? Я поместил его в onCreate. – David

+0

см. Мое редактирование ..... – Blackbelt

+0

ok. но как насчет scaleType? Просто использование layout_centerInParent не имеет значения. – David

Смежные вопросы