定义标题栏

activity_biao_ti

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 
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="match_parent"
    tools:context="com.bwie.test.titleactivitydemo.BiaoTiActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>

activity_title

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="match_parent"
    android:orientation="vertical"
    tools:context="com.bwie.test.Title.TitleActivity">

    <include layout="@layout/layout_titlebar"/>

    <FrameLayout
        android:id="@+id/layout_content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#fff"/>

</LinearLayout>

layout_titlebar

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="52dp"
    android:background="#ed4255">
    <TextView
        android:id="@+id/text_title"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:ellipsize="marquee"
        android:gravity="center_horizontal|center"
        android:singleLine="true"
        android:text="标题栏"
        android:textColor="#ffffffff"
        android:textSize="20dp" />

    <Button
        android:id="@+id/button_backward"
        android:layout_width="70dp"
        android:layout_height="match_parent"
        android:drawablePadding="6dp"
        android:ellipsize="end"
        android:gravity="center"
        android:onClick="onClick"
        android:paddingLeft="5dp"
        android:singleLine="true"
        android:text="返回"
        android:background="#ed4255"
        android:textColor="#f9f9f8"
        android:textSize="18dp"
        android:visibility="invisible" />

    <Button
        android:id="@+id/button_forward"
        android:layout_width="70dp"
        android:layout_height="match_parent"
        android:layout_alignParentRight="true"
        android:drawablePadding="6dp"
        android:ellipsize="end"
        android:gravity="center"
        android:onClick="onClick"
        android:paddingLeft="5dp"
        android:singleLine="true"
        android:background="#ed4255"
        android:text="提交"
        android:textColor="#f9f9f8"
        android:textSize="18dp"
        android:visibility="invisible" />

</RelativeLayout>

values文件夹下string

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="text_back">返回</string>
    <string name="text_forward">提交</string>

</resources>

BiaoActivity

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.bwie.test.Title.TitleActivity;

public class BiaoTiActivity extends TitleActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_biao_ti);

        setTitle("标题栏");
        showBackwardView(R.string.text_back,true);
        showForwardView(R.string.text_forward,true);
    }
}

TitleActivity

import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.bwie.test.titleactivitydemo.R;

public class TitleActivity extends AppCompatActivity implements View.OnClickListener{
    //private RelativeLayout mLayoutTitleBar;
    private TextView mTitleTextView;
    private Button mBackwardbButton;
    private Button mForwardButton;
    private FrameLayout mContentLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setupViews();
    }

    private void setupViews() {
        super.setContentView(R.layout.activity_title);
        //查找控件
        mTitleTextView = (TextView) findViewById(R.id.text_title);
        mContentLayout = (FrameLayout) findViewById(R.id.layout_content);
        mBackwardbButton = (Button) findViewById(R.id.button_backward);
        mForwardButton = (Button) findViewById(R.id.button_forward);
    }

    protected void showBackwardView(int backwardResid, boolean show) {
        if (mBackwardbButton != null) {
            if (show) {
                mBackwardbButton.setText(backwardResid);
                mBackwardbButton.setVisibility(View.VISIBLE);
            } else {
                mBackwardbButton.setVisibility(View.INVISIBLE);
            }
        } // else ignored
    }

    protected void showForwardView(int forwardResId, boolean show) {
        if (mForwardButton != null) {
            if (show) {
                mForwardButton.setVisibility(View.VISIBLE);
                mForwardButton.setText(forwardResId);
            } else {
                mForwardButton.setVisibility(View.INVISIBLE);
            }
        } // else ignored
    }

    protected void onBackward(View backwardView) {
        Toast.makeText(this, "点击返回,可在此处调用finish()", Toast.LENGTH_LONG).show();
        //finish();
    }

    protected void onForward(View forwardView) {
        Toast.makeText(this, "点击提交,可在此处调用finish()", Toast.LENGTH_LONG).show();
    }

    @Override
    public void setTitle(int titleId) {
        mTitleTextView.setText(titleId);
    }

    @Override
    public void setTitle(CharSequence title) {
        mTitleTextView.setText(title);
    }

    @Override
    public void setTitleColor(int textColor) {
        mTitleTextView.setTextColor(textColor);
    }

    @Override
    public void setContentView(int layoutResID) {
        mContentLayout.removeAllViews();
        View.inflate(this, layoutResID, mContentLayout);
        onContentChanged();
    }

    @Override
    public void setContentView(View view) {
        mContentLayout.removeAllViews();
        mContentLayout.addView(view);
        onContentChanged();
    }


    @Override
    public void setContentView(View view, ViewGroup.LayoutParams params) {
        mContentLayout.removeAllViews();
        mContentLayout.addView(view, params);
        onContentChanged();
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.button_backward:
                onBackward(view);
                break;
            case R.id.button_forward:
                onForward(view);
                break;
            default:
                break;
        }
    }
}
//自定义view缩放大小

activity_view

<?xml version="1.0" encoding="utf-8"?>
<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="match_parent"
    tools:context="com.bwie.test.viewhandler.ViewActivity">
    <com.bwie.test.viewhandler.MyView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
    </com.bwie.test.viewhandler.MyView>

</RelativeLayout>

ViewActivity

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class ViewActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view);

        setContentView(new MyView(this));
    }
}

MyView

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;

public class MyView extends View {
    //画笔
    private Paint mpaint;
    //原始坐标
    private float mx;
    private float my;
    //半径
    private float redio=100;

    public MyView(Context context) {
        this(context,null);
    }

    public MyView(Context context, AttributeSet attrs) {
        this(context, attrs,0);
    }

    public MyView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        //实例化画笔
        mpaint=new Paint();
        //抗锯齿
        mpaint.setAntiAlias(true);
        //画笔颜色
        mpaint.setColor(Color.RED);
        //单点移动
        this.setOnTouchListener(new OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent event) {
                if (event.getPointerCount()>1)
                    return  false;
                //当前坐标
                float x=   event.getX();
                float y=   event.getY();

                switch (event.getAction()){


                    //移动
                    case MotionEvent.ACTION_MOVE:
                        if(isOK(x,y,redio)){
                            mx=x;
                            my=y;

                            invalidate();
                        }

                        break;
                }
                return true;
            }
        });
    }

    /**
     * 计算了两点之间的距离
     * @param event
     * @return
     */
    private float getDisByXY(MotionEvent event){
        if(event.getPointerCount()>=2){
            //第一个点
            float x=event.getX();
            float y=event.getY();
            //第二个点
            float x2=event.getX(1);
            float y2=event.getY(1);

            return (float) Math.sqrt((x-x2)*(x-x2)+(y-y2)*(y-y2));
        }else{
            float x=event.getX();
            float y=event.getY();
            switch (event.getAction()){
                //移动
                case MotionEvent.ACTION_MOVE:
                    if(isOK(x,y,redio)){
                        mx=x;
                        my=y;
                        invalidate();
                    }
                    break;
            }
        }
        return  0;
    }

    private boolean isOK(float x,float y,float redio){
        return x>=redio&&x<=getWidth()-redio&&y>=redio&&y<=getHeight()-redio;
    }

    /**
     * 多点触控
     * @param event
     * @return
     */
    @Override
    public boolean onTouchEvent(MotionEvent event) {

        float dis=getDisByXY(event);
        if(dis!=0){
            if (isOK(mx,my,dis)){
                redio=dis;
                invalidate();
            }
        }
        return super.onTouchEvent(event);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        mx=getWidth()/2;
        my=getHeight()/2;

    }
    //画圆
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.drawCircle(mx,my,redio,mpaint);

    }
}

猜你喜欢

转载自blog.csdn.net/gh323093/article/details/79926573