在Activity里面实现对MyView的控制。(在Activity中取得view,把view传入到自定义的MyView中,在MyView对传入的view进行控制)
MainActivity.java
package com.example; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class MainActivity extends Activity { private MyView myView=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myView=(MyView)findViewById(R.id.myview); myView.setTextView((TextView)findViewById(R.id.text)); } }
MyView.java
package com.example; import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.widget.TextView; public class MyView extends View { private TextView textView; private boolean flag=false; public MyView(Context context) { super(context); } public MyView(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onDraw(Canvas canvas) { canvas.drawText("This is my View", 0, 100, new Paint()); super.onDraw(canvas); } @Override public boolean onTouchEvent(MotionEvent event) { //Log.d("textView.VISIBLE", textView.VISIBLE + ""); if (event.getAction() == MotionEvent.ACTION_DOWN) { setMode(); Log.d("textView.VISIBLE", textView.VISIBLE + ""); Log.d("textView.INVISIBLE", textView.INVISIBLE + ""); } return super.onTouchEvent(event); } public void setTextView(TextView textView) { this.textView = textView; } public void setMode() { if(flag){ textView.setVisibility(View.INVISIBLE); flag=false; }else{ textView.setVisibility(View.VISIBLE); flag=true; } } }
activity_main.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <com.example.MyView android:id="@+id/myview" android:layout_width="match_parent" android:layout_height="match_parent" /> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:gravity="center_horizontal" android:text="This MainActivity View" android:textColor="#ff8888ff" android:textSize="24sp" android:visibility="visible" /> </RelativeLayout> </FrameLayout>