我正在努力解决这背后的逻辑,所以任何提示都会受到赞赏。我有两个类,一个在其中创建片段,另一个在我的自定义视图中创建,我正在尝试做一些动画。在主布局中,我有一个编辑文本字段和一个按钮。我想要做的是在单击按钮时添加到自定义视图,编辑文本中的文本将添加到自定义视图。考虑如何做到这一点,我画了一个空白,我开始认为这是不可能的。我应该在自定义视图中创建编辑文本吗?这是显示我正在做什么的代码(但是仍然坚持下一步,或者我是否应该废弃这种方法并尝试不同的方法)
主要片段
public class DestroyerView extends Fragment
{
private Context mContext;
Paint paint = new Paint();
private AnimatedNegative PositiveAnimatedNegative;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
mContext = this.getActivity();
View view = inflater.inflate(R.layout.activity_destroyer, container, false);
final Button fire = (Button) view.findViewById(R.id.destroy);
PositiveAnimatedNegative = (AnimatedNegative) view.findViewById(R.id.anim_view);
fire.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View arg0)
{
// logic here?
}
});
return view;
}
}
public AnimatedNegative(Context context, AttributeSet attrs)
{
super(context, attrs);
mContext = this.getContext();
h = new Handler();
mCalendarDbHelper=new CalendarDbAdapter(mContext);
mCalendarDbHelper.open();
}
private Runnable r= new Runnable()
{
@Override
public void run()
{
invalidate();
}
};
protected void onDraw (Canvas canvas)
{
String word = "This is a sentence";
paint.setColor(Color.parseColor("#1E90FF"));
paint.setStyle(Style.FILL);
canvas.drawPaint(paint);
paint.setColor(Color.BLACK);
paint.setTextSize(20);
x = this.getWidth()/2;
y = this.getHeight()/2;
canvas.drawText(word, x, y, paint);
}
}
...如果我可以引用自定义视图中的按钮,这会更容易,但似乎我不能这样做,或者我可以简单地添加到主要活动内的自定义视图类,但似乎我也不能这样做(不是没有创建一个新的画布,这似乎做了太多我想做的事情(只是添加单词))。那么,最后,我正在努力做到这一点的方式是死路一条?任何帮助将不胜感激。
答案 0 :(得分:2)
我想我明白了。我将使用我的主要活动中定义的AnimatedNegative对象调用invalidate,然后从编辑文本传递单词和true值,以便我可以在视图中检查它并重绘。添加了以下代码:
在主要活动中:
public void onClick(View arg0)
{
PositiveAnimatedNegative.invalidate();
PositiveAnimatedNegative.add = true;
PositiveAnimatedNegative.positive_word = "This is a positive word";
}
在自定义视图中:
if (add == true)
{
canvas.drawText(positive_word, x,y, paint);
}