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