我創建的自定義視圖稱爲DrawViewSource
類延伸View
:發生在線路canvas.drawBitmap(...)
如何繪製位圖中一個自定義視圖中的非活動類
Paint paint;
Location location;
public DrawViewSource(Context context) {
super(context);
init();
}
public DrawViewSource(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public DrawViewSource(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
private void init() {
paint = new Paint();
// paint.setColor(Color.YELLOW);
// paint.setStrokeWidth(10);
}
@Override
public void onDraw(Canvas canvas) {
Bitmap image = BitmapFactory.decodeResource(getResources(),R.drawable.source_icon);
canvas.drawBitmap(image, location.position_x, location.position_y, paint);
}
}
錯誤。我看到一個像我的onDraw()
這樣的實現,作者說它的工作,我讀到這個實現只能在Activity
類中完成。我現在困惑。
不介意類Location
,它沒有錯誤。
我是否缺少一行代碼?該怎麼做,請賜教。
編輯:
04-21 07:49:58.938 26707-26707/com.myapp.alphasickbro.roomfindr E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.myapp.alphasickbro.roomfindr, PID: 26707
java.lang.NullPointerException
at com.myapp.alphasickbro.roomfindr.DrawViewSource.onDraw(DrawViewSource.java:47)
at android.view.View.draw(View.java:14740)
at android.view.View.getDisplayList(View.java:13636)
at android.view.View.getDisplayList(View.java:13678)
at android.view.View.draw(View.java:14457)
at android.view.ViewGroup.drawChild(ViewGroup.java:3117)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2954)
at android.view.View.draw(View.java:14743)
at android.view.View.getDisplayList(View.java:13636)
at android.view.View.getDisplayList(View.java:13678)
at android.view.View.draw(View.java:14457)
at android.view.ViewGroup.drawChild(ViewGroup.java:3117)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2954)
at android.view.View.draw(View.java:14743)
at android.widget.FrameLayout.draw(FrameLayout.java:472)
at android.widget.HorizontalScrollView.draw(HorizontalScrollView.java:1838)
at android.view.View.getDisplayList(View.java:13636)
at android.view.View.getDisplayList(View.java:13678)
at android.view.View.draw(View.java:14457)
at android.view.ViewGroup.drawChild(ViewGroup.java:3117)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2954)
at android.view.View.draw(View.java:14743)
at android.widget.FrameLayout.draw(FrameLayout.java:472)
at android.widget.ScrollView.draw(ScrollView.java:1831)
at android.view.View.getDisplayList(View.java:13636)
at android.view.View.getDisplayList(View.java:13678)
at android.view.View.draw(View.java:14457)
at android.view.ViewGroup.drawChild(ViewGroup.java:3117)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2954)
at android.view.View.getDisplayList(View.java:13631)
at android.view.View.getDisplayList(View.java:13678)
at android.view.View.draw(View.java:14457)
at android.view.ViewGroup.drawChild(ViewGroup.java:3117)
at android.support.v4.widget.DrawerLayout.drawChild(DrawerLayout.java:1060)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2954)
at android.view.View.getDisplayList(View.java:13631)
at android.view.View.getDisplayList(View.java:13678)
at android.view.View.draw(View.java:14457)
at android.view.ViewGroup.drawChild(ViewGroup.java:3117)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2954)
at android.view.View.draw(View.java:14743)
at android.widget.FrameLayout.draw(FrameLayout.java:472)
at android.view.View.getDisplayList(View.java:13636)
at android.view.View.getDisplayList(View.java:13678)
at android.view.View.draw(View.java:14457)
at android.view.ViewGroup.drawChild(ViewGroup.java:3117)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2954)
at android.view.View.getDisplayList(View.java:13631)
at android.view.View.getDisplayList(View.java:13678)
at android.view.View.draw(View.java:14457)
at android.view.ViewGroup.drawChild(ViewGroup.java:3117)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2954)
at android.view.View.getDisplayList(View.java:13631)
at android.view.View.getDisplayList(View.java:13678)
at android.view.View.draw(View.java:14457)
at android.view.ViewGroup.drawChild(ViewGroup.java:3117)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2954)
at android.view.View.getDisplayList(View.java:13631)
at android.view.View.getDisplayList(View.java:13678)
at android.view.View.draw(View.java:14457)
at android.view.ViewGroup.drawChild(ViewGroup.java:3117)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2954)
at android.view.View.draw(View.java:14743)
at android.widget.FrameLayout.draw(FrameLayout.java:472)
at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2329)
at android.view.View.getDisplayList(View.java:13636)
at android.view.View.getDisplayList(View.java:13678)
at android.view.HardwareRenderer$GlRenderer.buildDisplayList(HardwareRenderer.java:1570)
at android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:1449)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:2408)
at android.view.ViewRootImpl.
這裏就是我創建Location()
:
Location loc;
public CustomOnItemSelectedListener(MainActivity mac) {
this.mac=mac;
}
public void onItemSelected(AdapterView<?> parent, View view, int pos,long id) {
if (pos == 0) {
loc= new Location(1322,227);
mac.dvs.invalidate();
}
// Toast.makeText(parent.getContext(), "OnItemSelectedListener : " + parent.getItemAtPosition(pos).toString(), Toast.LENGTH_SHORT).show();
}
這是我Location
類的樣子:
public float position_x,position_y;
public Location(float position_x, float position_y) {
this.position_x = position_x;
this.position_y = position_y;
}
你遇到什麼樣的錯誤?請發佈堆棧跟蹤。 – AndroidEx