я подготовил один пользовательский вид, используя метод onDraw,
мой класс просмотра,
public class MyAlphabetDraw extends View {
Paint mPaint = new Paint();
public static Bitmap myBitmap;
public MyAlphabetDraw(Context context, AttributeSet attributeSet) {
super(context, attributeSet);
mPaint.setDither(true);
mPaint.setColor(0xFFFFFFFF);
mPaint.setTextSize(50);
}
public void onDraw(Canvas canvas) {
// canvas.drawColor(Color.BLUE);
myBitmap = Bitmap.createBitmap(canvas.getWidth(), canvas.getHeight(),
Bitmap.Config.ARGB_8888);
System.out.println("bitmaps ---"+myBitmap);
canvas.drawText("Android", 50, 280,mAlphaInner);
}
}
Здесь я преобразовал представление в растровое изображение, используя,
myBitmap = Bitmap.createBitmap(canvas.getWidth(), canvas.getHeight(),
Bitmap.Config.ARGB_8888);
после получения растровых изображений i, преобразованных в пиксели с использованием,
private int intArray[];
intArray = new int[myBitmap.getWidth() * myBitmap.getHeight()];
// copy pixel data from the Bitmap into the 'intArray' array
myBitmap.getPixels(intArray, 0, myBitmap.getWidth(), 0, 0, myBitmap.getWidth(),myBitmap.getHeight());
// replace the red pixels with yellow ones
for (int i = 0; i < intArray.length; i++) {
System.out.println("color is--"+i+" "+intArray[i]);
if (intArray[i] == 0xFFFFFFFF) {
intArray[i] = 0xFFFF0000;
}
}
здесь управление не входит, если condition.sop напечатало значение цвета всегда "0". Некоторые, где я сделал ошибку... пожалуйста, мне
Ответ на ваш вопрос заключается в том, что вы получите 0 только так, как в вашем коде, вы никогда не обновляли растровое изображение каким-либо рисунком. Все действия были связаны только с созданием растрового изображения.
Вы должны вызвать apis как myBitmap.setPixel(0,0,color)
.
Теперь, если вы хотите использовать холст для записи в Bitmap. Вам нужно создать новый холст. Вот код sudo:
Canvas bmpCanvas = new Canvas(myBitmap);
bmpCanvas.drawText("Android", 50, 280,mAlphaInner);
// change pixel values in the bitmap like you are doing above
// or you should use bmpCanvas to change the values
// and after that
canvas.drawBitmap(myBitmap, 0, 0, null);
Здесь у вас есть полная реализация, переход на кодекс надежды поможет вам:
package com.test;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;
public class MyAlphabetDraw extends View {
Paint mPaint = new Paint();
Paint mAlphaInner = new Paint();
public static Bitmap myBitmap;
public static Canvas bmpCanvas;
private int intArray[];
public MyAlphabetDraw(Context context) {
super(context);
init();
}
public MyAlphabetDraw(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
public MyAlphabetDraw(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
void init() {
mPaint.setDither(true);
mPaint.setColor(0xFFFFFFFF);
mPaint.setTextSize(100);
mPaint.setStrokeWidth(10);
mAlphaInner.setDither(true);
mAlphaInner.setColor(0xFF0000FF);
mAlphaInner.setTextSize(98);
}
@Override
protected void onDraw(Canvas canvas) {
if (myBitmap == null) {
myBitmap = Bitmap.createBitmap(canvas.getWidth(), canvas.getHeight(),
Bitmap.Config.ARGB_8888);
bmpCanvas = new Canvas(myBitmap);
intArray = new int[myBitmap.getWidth() * myBitmap.getHeight()];
}
if (bmpCanvas != null) {
bmpCanvas.drawCircle(100, 100, 100, mPaint);
bmpCanvas.drawCircle(100, 100, 90, mAlphaInner);
// Code to get copy pixels into int array
myBitmap.getPixels(intArray, 0, myBitmap.getWidth(), 0, 0, myBitmap.getWidth(),
myBitmap.getHeight());
// Sample code if you put false the image will have white border
// if true image will have red color for white pixels
if (true) {
for (int i = 0; i < intArray.length; i++) {
if (intArray[i] == 0xFFFFFFFF) {
intArray[i] = 0xFFFF0000;
}
}
myBitmap.setPixels(intArray, 0, myBitmap.getWidth(), 0, 0, myBitmap.getWidth(),
myBitmap.getHeight());
}
}
if (myBitmap != null)
canvas.drawBitmap(myBitmap, 0, 0, null);
}
}
myBitmap
ноmyBitmap
пиксели изbmp
. Поскольку вы разместили фрагменты, я не могу быть уверен, что это правильно. Пожалуйста, проверьте, что это желательно.