android自定义视图

在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>

posted @ 2014-05-21 11:05  剑风云  阅读(316)  评论(0编辑  收藏  举报