我有一个概念性的问题要问:
我创建了一个自定义对话框(扩展Dialog),我想在对话框的前三分之一处绘制一个图表(动态数据,而不是静态数据)。
最好(唯一?)方法是什么?
A)获取画布到对话框并绘制到它?好像我需要访问对话框的抽奖,是的,还是我可以在抽奖之外做到这一点?
B)在对话框布局中对一个视图进行子类化(例如LinearLayout)并覆盖它的绘制并绘制图表?
C)其他?我读过一种方法是绘制一个位图然后blt(或等效)到画布。这听起来更接近我想做的事情,因为一旦我创建了图表,我就没有必要改变它(没有直接的用户交互)。
我还没有找到任何在对话框中处理自定义绘图的好示例代码,所以如果我遗漏了某些内容,那么示例就会很棒。
非常感谢,
富
答案 0 :(得分:1)
解决。
我的解决方案是以上B / C的混合体。由于我需要访问视图的draw()方法,因此我创建了自己的ImageView子类(例如,MyView)。
在draw()中,我可以获得ImageView在对话框中显示的动态大小。鉴于大小,我现在可以在对话框中执行缩放到自定义ImageView大小的绘制。
我必须记住在对话框布局中使用正确的自定义视图XML语法(例如“com.avaliant.dialogtest.MyView”来替换“ImageView”)。当然,在我的对话框类中,我必须设置为查看正确的视图类:
MyView test = (MyView)dialogView.findViewById(R.id.test);
一旦我理解了为什么我必须做我必须做的事情,这很容易。)。
富
答案 1 :(得分:0)
我是这样做的:
继续创建一个常规的Activity。然后照常在该活动中绘制我的图表。
然后将extends Activity
更改为AndroidManifest.XML
,
然后将该对话框的主题添加到我的 android:theme="@android:style/Theme.Holo.Dialog.NoActionBar"
文件中:
log.d