2011-12-19 5 views
4

У меня есть splash.png и хочу, чтобы это изображение занимало все место на экране, как fitXY для ImageView. splash.png имеет размеры 480x767.Как установить размер изображения?

Что я должен изменить в своем коде?

public class BitmapConfigView extends LinearLayout { 
private Bitmap mImage; 
private Paint mPaint = new Paint(); 

public BitmapConfigView(Context context) { 
    super(context); 

    BitmapFactory.Options opts = new BitmapFactory.Options(); 
    opts.inPreferredConfig = Bitmap.Config.ARGB_8888; 
    opts.inScaled = false; 
    mImage = BitmapFactory.decodeResource(getResources(), R.drawable.splash, opts); 

    mPaint.setDither(true); 
    setWillNotDraw(false); 
    setOrientation(VERTICAL); 
    setGravity(Gravity.BOTTOM); 
} 

@Override 
protected void onDraw(Canvas canvas) { 
    canvas.drawBitmap(mImage, 0.0f, 0.0f, mPaint); 
} 
} 
+0

Какие подходы вы пытались? Какие у вас проблемы? –

+0

Я пытаюсь решить [link] (http://stackoverflow.com/questions/8563370/how-to-apply-rgba-8888-and-dither-correctly/8563452#8563452) по-разному. Код в этом вопросе дает мне отличное изображение, но с неправильным размером. – Sviatoslav

ответ

1

В результате, я использовал WebView:

public class TestwebViewimageActivity extends Activity { 
private WebView wv; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    wv = (WebView) findViewById(R.id.webview); 
    wv.setWebViewClient(new HelloWebViewClient()); 
    wv.setBackgroundColor(0x00000000); 
    wv.getSettings().setBuiltInZoomControls(false); 
    wv.setVerticalScrollBarEnabled(false); 
    wv.setHorizontalScrollBarEnabled(false); 
    wv.loadUrl("file:///android_asset/6.html"); 

} 

private class HelloWebViewClient extends WebViewClient { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     view.loadUrl(url); 
     return true; 
    } 
} 
} 

main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical"> 

    <WebView 
    android:id="@+id/webview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"/> 
</LinearLayout> 

6.html

<html> 
<head> 
<style type="text/css"> 

body { 
margin: 0; 
    background-color: black; 
} 

html, body, #my-image { 
    width: 100%; 
    height: 100%; 
} 

#my-image { 
    background-size: cover; 
    background-image: url(splash.png); 
    background-position: center center; 
    background-repeat: no-repeat; 
} 

</style> 
</head> 
<body> 

<div id="my-image"></div> 

</body> 
</html> 
1

Это как обычно я использую метод масштаба.

public Bitmap getResizedBitmap(Bitmap bm, int newHeight, int newWidth) { 

int width = bm.getWidth(); 

int height = bm.getHeight(); 

float scaleWidth = ((float) newWidth)/width; 

float scaleHeight = ((float) newHeight)/height; 

// create a matrix for the manipulation 

Matrix matrix = new Matrix(); 

// resize the bit map 
    matrix.postScale(scaleWidth, scaleHeight); 
// recreate the new Bitmap 

Bitmap resizedBitmap = Bitmap.createBitmap(bm, 0, 0, width, height, matrix, false); 

return resizedBitmap; 

} 
+2

Это нормально, но android.graphics.Bitmap.createScaledBitmap сделает это за вас :) –

3

Масштаб растрового изображения. Это то, что вы ищете:
android.graphics.Bitmap.createScaledBitmap

+0

В этом случае 'bMapScaled = Bitmap.createScaledBitmap (mImage, 320, 480, false);' Я получаю искажение градиента изображения: ( – Sviatoslav

+0

Попробуйте с фильтром = true (4-й аргумент). –

+0

'filter = true' текст на изображении выглядит очень хорошо, но не градиент. Я могу отправить вам упрощенный проект .zip с изображением и активностью, если у вас есть возможность смотреть его. – Sviatoslav

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