1
내 웹 페이지를로드하는 응용 프로그램에서 android WebView를 사용하고 있으며 사용자가 흰색으로 검은 색 & 흰색으로 WebView 내용을 볼 수 있도록 돕고 싶습니다. 나는 그것의 onDraw 방법에 웹보기에 컬러 필터를 적용 :Android WebView 캔버스에 BLACK & WHITE 컬러 필터 적용 해당 스크롤 속도 느려짐
public class WebViewInverterDummy extends WebView {
private Paint paint;
private ColorFilter cf;
private Rect inversionRect;
private Canvas cc;
private int NORMAL_MODE = 0;
private int BLACK_WHITE_MODE = 1;
public int WEB_VIEW_MODE = 0;
private int LAST_SELECTED_MODE = 0;
// private Bitmap bitmap;
private ColorMatrix normalViewMatrix;
private ColorMatrix blackViewMatrix;
public WebViewInverterDummy(Context context) {
super(context);
intiFields();
init();
paint = new Paint();
intBlackViewMatrix();
}
private void intiFields() {
inversionRect = new Rect();
cc = new Canvas();
}
@Override
protected void onDraw(Canvas c) {
if (WEB_VIEW_MODE == NORMAL_MODE) {
super.onDraw(c);
} else {
if (bitmap == null) {
bitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);
cc = new Canvas(bitmap);
}
super.onDraw(cc);
init();
c.drawColor(Color.WHITE);
c.drawBitmap(bitmap, 0, 0, paint);
}
}
private void init() {
if (cf == null || WEB_VIEW_MODE != LAST_SELECTED_MODE) {
if (WEB_VIEW_MODE == BLACK_WHITE_MODE) {
if (blackViewMatrix == null)
intBlackViewMatrix();
cf = new ColorMatrixColorFilter(blackViewMatrix);
}
}
}
public void setWEB_VIEW_MODE(int mode) {
LAST_SELECTED_MODE = WEB_VIEW_MODE;
WEB_VIEW_MODE = mode;
}
public int getWebViewMode() {
return WEB_VIEW_MODE;
}
private ColorMatrix intBlackViewMatrix() {
// Black & white Mode
float[] mx = new float[]{
-1.0f, 0, 0, 0, 255, //red
0, -1.0f, 0, 0, 255, //green
0, 0, -1.0f, 0, 255, //blue
0, 0, 0, 1.0f, 0 //alpha
};
blackViewMatrix = new ColorMatrix(mx);
blackViewMatrix.setSaturation(0);
return blackViewMatrix;
}
}
나는 웹보기에 검은 & 화이트 색상을 적용 할 성공했지만 문제는 웹보기의 스크롤 속도를 느리게한다는 것입니다. 어떻게 그것을 최적화 할 수 있으며 캔버스 위에 컬러 필터를 직접 적용 할 수있는 방법이 있습니다. 캔버스 위에 비트 맵을 그리면 WebView 속도가 느려지므로이를 최적화하는 방법을 제안합니다. 감사합니다.