自定義view+接口回調切換activity

MainActivity

private MyTextView mytextview;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mytextview = (MyTextView) findViewById(R.id.mytextview);
    mytextview.setMysetonimageclicklistener(this);
}

@Override
public void setonimageclicklistener(View view) {
    startActivity(new Intent(this,TwoActivity.class));
}

Activity_Main佈局

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    tools:context="com.aqinga.lianxi2.MainActivity">

    <com.aqinga.lianxi2.MyTextView
        android:id="@+id/mytextview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:text_title="MainActivity"
        app:text_size="16dp"
        app:text_color="@color/colorAccent"
        app:src_color="@color/colorPrimary"></com.aqinga.lianxi2.MyTextView>

</RelativeLayout>

MyTextView

public class MyTextView extends LinearLayout {

    private TextView text;
    private ImageView image;
    private int srccolor;
    private float size;
    private int color;
    private String title;
    private TypedArray typedArray;
    private RelativeLayout content;

    public MyTextView(Context context) {
        super(context);
        init(context,null);
    }

    public MyTextView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        init(context,attrs);
    }
    public void init(Context context,AttributeSet attrs){
        View inflate = inflate(context, R.layout.mytextview, this);
        content = (RelativeLayout) inflate.findViewById(R.id.recontent);
        image = (ImageView) findViewById(R.id.image_view);
        text = (TextView) findViewById(R.id.text_view);
        image.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                if (mysetonimageclicklistener!=null){
                    mysetonimageclicklistener.setonimageclicklistener(v);
                }
            }
        });
        if(attrs==null){
            return;
        }
        init1(context,attrs);
        selected();
    }
    public void init1(Context context,AttributeSet attrs){
        if (attrs==null){
            return;
        }
        typedArray = context.obtainStyledAttributes(attrs, R.styleable.MyTextView);
        title = typedArray.getString(R.styleable.MyTextView_text_title);
        color = typedArray.getColor(R.styleable.MyTextView_text_color, Color.GRAY);
        size = typedArray.getDimension(R.styleable.MyTextView_text_size, 16);
        srccolor = typedArray.getColor(R.styleable.MyTextView_src_color, Color.RED);

    }
    public void selected(){
        content.setBackgroundColor(srccolor);
        text.setText(title);
        text.setTextColor(color);
        text.setTextSize(size);
    }
    public interface onimageclicklistener{
        void setonimageclicklistener(View view);
    }
    private onimageclicklistener mysetonimageclicklistener;

    public void setMysetonimageclicklistener(onimageclicklistener mysetonimageclicklistener) {
        this.mysetonimageclicklistener = mysetonimageclicklistener;
    }
}

mytextview佈局

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:id="@+id/recontent"
    android:background="#ff9999"
   >

    <ImageView
        android:id="@+id/image_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:src="@mipmap/ic_launcher"/>
    <TextView
        android:id="@+id/text_view"
        android:text="text"
        android:gravity="center"
        android:layout_centerHorizontal="true"
        android:layout_width="wrap_content"
        android:layout_height="match_parent" />
</RelativeLayout>

TwoActivity

public class TwoActivity extends AppCompatActivity implements MyTextView.onimageclicklistener {

    private MyTextView mytextview;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.twoactivity);
        mytextview = (MyTextView) findViewById(R.id.mytextview);
        mytextview.setMysetonimageclicklistener(this);
    }

    @Override
    public void setonimageclicklistener(View view) {
        finish();
    }
}

twoactivity佈局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="horizontal"
    android:layout_height="60dp"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <com.aqinga.lianxi2.MyTextView
        android:id="@+id/mytextview"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        app:text_title="TwoActivity"
        app:text_size="16dp"
        app:text_color="@color/colorPrimary"
        app:src_color="@color/colorAccent"></com.aqinga.lianxi2.MyTextView>
</RelativeLayout>

attrs佈局

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="MyTextView">
        <attr name="text_title" format="string"></attr>
        <attr name="text_size" format="dimension"></attr>
        <attr name="text_color" format="color"></attr>
        <attr name="src_color" format="reference"></attr>
    </declare-styleable>
</resources>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章