这是我的xml文件:我试图访问的图像视图
<ImageView
android:layout_width="350dip"
android:layout_height="400dip"
android:id="@+id/imgview"
android:background="@drawable/pattern"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
这是我的代码..请仔细阅读代码并让我知道我在哪里做错了我在互联网上搜索过的东西只是想弄清楚如何制作位图对象并在图像视图上绘制画布
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setContentView(new SampleView(this));
}
private static class SampleView extends View {
private ImageView img;
// CONSTRUCTOR
public SampleView(Context context) {
super(context);
setFocusable(true);
img = (ImageView)findViewById(R.id.imgview);
}
@Override
protected void onDraw(Canvas canvas) {
Paint paint = new Paint();
canvas.drawColor(Color.GREEN);
//I keep on getting null pointer exception here
Bitmap b = Bitmap.createBitmap(img.getMeasuredWidth(),img.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
c.drawRect(0, 0, 200, 200, paint);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC));
paint.setTextSize(40);
paint.setTextScaleX(1.f);
paint.setAlpha(0);
paint.setAntiAlias(true);
c.drawText("Your text", 30, 40, paint);
paint.setColor(Color.RED);
canvas.drawBitmap(b, 10,10, paint);
}
}
}
答案 0 :(得分:0)
如果您在该行上获得NullPointerException,则表示img
为空,这意味着findViewById(R.id.imgview);
返回null,或者onDraw正在super(context);
执行(不确定是否属于这种情况)。
答案 1 :(得分:0)
当您想要在位图中使用的宽度或高度超过设备大小时,您可能会收到此错误。您应该使用createScaledBitmap
。这会对你有所帮助。