음,보기에도 SVG 이미지를 배치하는 비슷한 문제에 대해 궁금해 할 때가있었습니다. 여기
안드로이드에있는 CustomView에 SVG 이미지를 표시하는 데모입니다 :
: 무엇을 위의 코드에서 중요한 것은 라인입니다
// CustomView.java
package com.test.svg;
import java.io.IOException;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Picture;
import android.util.AttributeSet;
import android.view.View;
import com.larvalabs.svgandroid.SVG;
import com.larvalabs.svgandroid.SVGParseException;
import com.larvalabs.svgandroid.SVGParser;
public class CustomView extends View {
private Picture picture;
private int scaleFactor;
public CustomView(Context context) {
super(context);
initialize();
}
public CustomView(Context context, AttributeSet attrs) {
super(context, attrs);
initialize();
}
private void initialize() {
scaleFactor = 1;
try {
setLayerType(View.LAYER_TYPE_SOFTWARE, null); // This is important!!!
SVG svg = SVGParser.getSVGFromAsset(getContext().getAssets(),
"Character.svg");
picture = svg.getPicture();
} catch (SVGParseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.save();
// Code for centering the SVG.
canvas.translate((getWidth() - scaleFactor * picture.getWidth()) >> 1,
(getHeight() - scaleFactor * picture.getHeight()) >> 1);
canvas.scale(scaleFactor, scaleFactor);
canvas.drawPicture(picture);
canvas.restore();
}
}
:
// MainActivity.java
package com.test.svg;
import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
CustomView view = new CustomView(this);
view.setBackgroundResource(android.R.color.holo_green_dark);
setContentView(view);
}
}
여기 CustomView
클래스의
setLayerType(View.LAYER_TYPE_SOFTWARE, null);
u 대신 SVG-Android-2을 다운로드하여 사용하십시오. 그것의 첫번째 버전을 노래하십시오.
이 코드를 조정하면 SVG를 배경 이미지로 표시 할 수 있습니다. 특정 요소로 SVG의 크기를 조절 한 다음 onDraw()
메서드를 사용하면됩니다.
또한 내 SVG 이미지는 assets
폴더에 보관되어 있으므로 위 코드에 표시된대로 AssetManager
을 사용하여 SVG를로드했습니다.
답장을 보내 주셔서 감사합니다. 많은 도움이되었습니다. 그러나 스케일 인자 대신에 SVG.resizePicture 메소드를 사용하면 PictureDrawable을 내 그림으로 만들었습니다. – Lovy