1

我正在爲此背後的邏輯苦苦掙扎,因此我們將不勝感激。我有兩個類,一個是創建片段的,另一個是創建自定義視圖的類,我試圖做一些動畫。在主佈局中,我有一個編輯文本字段和一個按鈕。我想要做的是在單擊按鈕時添加到自定義視圖中,編輯文本中的文本將被添加到自定義視圖中。思考如何做到這一點,我正在畫一個空白,我開始認爲這是不可能的。我應該在自定義視圖中創建編輯文本嗎?這裏是代碼顯示我在做什麼(但卡在下一步,或者我是否應該放棄這一做法,並嘗試不同的一個)改變主要活動中的按鈕單擊畫布

主要片段

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); 
    } 
    } 

...現在如果我可以在自定義視圖內引用按鈕,這會容易得多,但似乎我無法做到這一點,或者如果我可以簡單地添加到主活動類的自定義視圖中,但它不會似乎我可以做到這一點(不是沒有創建一個新的畫布,這似乎是做了太多的事情,我想要做什麼(只是添加單詞))。那麼,最後,我目前正在試圖做到這一點的死路?任何幫助,將不勝感激。

回答

2

我想我明白了。我將使用我的主要活動中定義的AnimatedNegative對象調用invalidate,然後從編輯文本和一個真實值中傳入單詞,以便我可以在視圖中檢查它並重繪。

內的主要活動:

 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); 
      } 
如下所示添加代碼