1, Baseactivity.java
Package com.gyq.utilstest.base;
Import Android.content.Context;
Import Android.os.Bundle;
Import android.support.v4.app.FragmentActivity;
Import Android.support.v4.view.GravityCompat;
Import Android.support.v4.widget.DrawerLayout;
Import Android.view.View;
Import com.gyq.utilstest.MyApplication;
Import COM.GYQ.UTILSTEST.R;
Import Com.gyq.utilstest.listener.MyToolBarClickListener;
Import Com.gyq.utilstest.widget.MyToolBar;
/** * Created by DELL on 2018/4/27. */Public abstract class Baseactivity extends Fragmentactivity implements Mytoolbarclicklistener {public static fi
nal String is_not_add_activity_list = "is_add_activity_list";//whether to join the ACTIVITY LIST, management protected Context mcontext;
protected MyApplication mapplication;
protected String TAG = GetClass (). GetName ();
protected Activityfragmentinject Annotation;
protected Mytoolbar Mytoolbar;
protected Drawerlayout drawer;
Protected Boolean eventflag = true;
protected String Start_from; @Override protected void OnCreate (Bundle savedinstancestate) {super.oncreate (savedinstancestate);
Mcontext = this; if (!getclass (). Isannotationpresent (Activityfragmentinject.class)) {throw new RuntimeException ("must use ACTI
Vityfragmentinitparams.class ");
} Start_from = Getintent (). Getstringextra ("Start_from");
annotation = GetClass (). Getannotation (Activityfragmentinject.class);
Mapplication = (MyApplication) getapplication ();
Boolean isnotadd = Getintent (). Getbooleanextra (Is_not_add_activity_list, false);
Synchronized (Baseactivity.class) {if (!isnotadd) mapplication.getactivitylist (). Add (this);
} setcontentview (Annotation.contentviewid ());
if (Annotation.hastoolbar ()) {Inittoolbar ();
} findviewafterviewcreate ();
Initdataafterfindview (); } private void Inittoolbar () {Mytoolbar = (MytooLbar) Findviewbyid (R.id.mytoolbar);
Mytoolbar.setmytoolbarclicklistener (this);
int toolbarlefticonid = Annotation.toolbarlefticon ();
if (Toolbarlefticonid! =-1) {Mytoolbar.setlefticon (Toolbarlefticonid);
} else {mytoolbar.getlefticonroot (). setvisibility (View.gone);
} int toolbarrighticonid = Annotation.toolbarrighticon ();
if (Toolbarrighticonid! =-1) {Mytoolbar.setrighticon (Toolbarrighticonid);
} else {mytoolbar.getrighticonroot (). setvisibility (View.gone);
} int toolbarlefttextid = Annotation.toolbarlefttext ();
if (Toolbarlefttextid! =-1) {mytoolbar.setlefttext (Toolbarlefttextid);
} else {mytoolbar.getlefttextroot (). setvisibility (View.gone);
} int toolbarrighttextid = Annotation.toolbarrighttext ();
if (Toolbarrighttextid! =-1) {mytoolbar.setrighttext (Toolbarrighttextid); } else {mytoolbar.getrighttextroot (). setvisibility (View.gone);
} int titletextid = Annotation.toolbartitle ();
if (Titletextid! =-1) {mytoolbar.settitletext (Titletextid);
}} @Override protected void OnPause () {super.onpause ();
} @Override protected void Onresume () {super.onresume ();
} @Override protected void OnDestroy () {Super.ondestroy (); } @Override public void onbackpressed () {if (drawer! = NULL) {if (Drawer.isdraweropen (Gravi
Tycompat.start)) {drawer.closedrawer (Gravitycompat.start);
} else {super.onbackpressed ();
}} else {super.onbackpressed ();
}} protected abstract void Findviewafterviewcreate ();
protected abstract void Initdataafterfindview ();
@Override public void Lefttextclick (view view) {} @Override public void Lefticonclick (view view) {} @Override public void Righttextclick (view view) { } @Override public void Righticonclick (view view) {} protected void Finishall () {if (!ISF
Inishing ()) {finish ();
}} protected void Finishwithtag (String tagName) {if (GetClass (). Getsimplename (). Equals (TagName)) {
Finish ();
}
}
}
2, Mytoolbar.java
Package com.gyq.utilstest.widget;
Import Android.content.Context;
Import android.graphics.drawable.Drawable;
Import Android.util.AttributeSet;
Import Android.view.View;
Import Android.widget.ImageView;
Import Android.widget.LinearLayout;
Import Android.widget.RelativeLayout;
Import Android.widget.TextView;
Import COM.GYQ.UTILSTEST.R;
Import Com.gyq.utilstest.listener.MyToolBarClickListener;
/** * Created by DELL on 2018/4/27.
*/public class Mytoolbar extends LinearLayout implements View.onclicklistener {private Context mcontext;
Private ImageView Lefticon;
Private ImageView Righticon;
Private TextView TitleText;
Private TextView titleText2;
Private TextView Lefttext;
Private TextView Righttext;
Private Relativelayout Lefticonroot, Lefttextroot, Righticonroot, Righttextroot;
Private Mytoolbarclicklistener Mytoolbarclicklistener;
Public Mytoolbar (Context context) {This (context, NULL); } public Mytoolbar (Context ContexT, AttributeSet Attrs) {This (context, attrs, 0); } public Mytoolbar (context context, AttributeSet attrs, int defstyleattr) {Super (context, Attrs, Defstyleatt
R);
Mcontext = context;
Initview ();
InitData ();
} private void Initview () {View view = View.inflate (Mcontext, R.layout.widget_toolbar, this);
Lefticon = (ImageView) View.findviewbyid (r.id.img_toolbar_left);
Righticon = (ImageView) View.findviewbyid (r.id.img_toolbar_right);
TitleText = (TextView) View.findviewbyid (r.id.txt_toolbar_title);
Lefttext = (TextView) View.findviewbyid (r.id.txt_toolbar_left);
Righttext = (TextView) View.findviewbyid (r.id.txt_toolbar_right);
Lefticonroot = (relativelayout) View.findviewbyid (r.id.img_toolbar_left_root);
Lefttextroot = (relativelayout) View.findviewbyid (r.id.txt_toolbar_left_root);
Righticonroot = (relativelayout) View.findviewbyid (r.id.img_toolbar_right_root); Righttextroot = (relativelayout) View.findviewbyid (r.id.txt_toolbar_right_root);
} private void InitData () {Lefticonroot.setonclicklistener (this);
Lefttextroot.setonclicklistener (this);
Righticonroot.setonclicklistener (this);
Righttextroot.setonclicklistener (this);
public void Settitletext (String title) {Titletext.settext (title);
Public String Gettitletext () {return Titletext.gettext (). toString (). Trim ();
} public void Settitletext (int resId) {titletext.settext (resId);
} public void Setlefttext (int resId) {lefttext.settext (resId);
public void Setrighttext (String title) {Righttext.settext (title);
Public String Getrighttext () {return Righttext.gettext (). toString (). Trim ();
} public void Setrighttext (int resId) {righttext.settext (resId); } public void Setlefticon (int resId) {lefticon.setbackgRoundresource (RESID);
} public void Setrighticon (int resId) {righticon.setbackgroundresource (resId);
} public void Setrighttextcolor (int resId) {righttext.settextcolor (resId);
} public Relativelayout Getlefticonroot () {return lefticonroot;
} public void Setlefticonroot (Relativelayout lefticonroot) {this.lefticonroot = Lefticonroot;
} public Relativelayout Getlefttextroot () {return lefttextroot;
} public void Setlefttextroot (Relativelayout lefttextroot) {this.lefttextroot = Lefttextroot;
} public Relativelayout Getrighticonroot () {return righticonroot;
} public void Setrighticonroot (Relativelayout righticonroot) {this.righticonroot = Righticonroot;
} public Relativelayout Getrighttextroot () {return righttextroot;
} public void Setrighttextroot (Relativelayout righttextroot) {this.righttextroot = Righttextroot; } public void setrighticonvisiable (int visiable) {righticonroot.setvisibility (visiable);
if (visiable = = VISIBLE) {Righticonroot.setonclicklistener (this);
Righticonroot.setclickable (TRUE);
} else {righticonroot.setonclicklistener (null);
Righticonroot.setclickable (FALSE);
}} public void setrighttextvisiable (int visiable) {righttextroot.setvisibility (visiable);
if (visiable = = VISIBLE) {Righttextroot.setonclicklistener (this);
Righttextroot.setclickable (TRUE);
} else {righttextroot.setonclicklistener (null);
Righttextroot.setclickable (FALSE); }} public void Settitlelistener (Onclicklistener onclicklistener) {Titletext.setonclicklistener (Onclickl
Istener);
@Override public void OnClick (View v) {if (Mytoolbarclicklistener = = null) {return;
} Switch (V.getid ()) {Case R.id.img_toolbar_left_root:mytoolbarclicklistener.lefticonclick (
V);
Break
Case R.id.img_toolbar_right_root:mytoolbarclicklistener.righticonclick (v);
Break
Case R.id.txt_toolbar_left_root:mytoolbarclicklistener.lefttextclick (v);
Break
Case R.id.txt_toolbar_right_root:mytoolbarclicklistener.righttextclick (v);
Break }} public void Setmytoolbarclicklistener (Mytoolbarclicklistener mytoolbarclicklistener) {This.mytoolbar
Clicklistener = Mytoolbarclicklistener; The public void Isshowpopup () {drawable drawable = getresources (). Getdrawable (r.drawable.icon_select_family_up
);
Drawable.setbounds (0, 0, drawable.getminimumwidth (), Drawable.getminimumheight ());
Titletext.setcompounddrawables (null, NULL, drawable, NULL); TitletExt.setcompounddrawablepadding (10);
}
}
3, Mytoolbarclicklistener.java
Package Com.gyq.utilstest.listener;
Import Android.view.View;
/**
* Created by DELL on 2018/4/27.
*
/public interface Mytoolbarclicklistener {
void Lefttextclick (view view);
void Lefticonclick (view view);
void Righttextclick (view view);
void Righticonclick (view view);
}
3.1 Layout file:
<?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=" @dimen/dimen_50dp "android:background=" @co Lor/white_ff "> <relativelayout android:layout_width=" @dimen/dimen_42dp "android:layout_height=" Match_parent "android:layout_centervertical=" true "> <relativelayout android:id=" @+id/im
G_toolbar_left_root "android:layout_width=" match_parent "android:layout_height=" Match_parent "> <imageview android:id= "@+id/img_toolbar_left" android:layout_width= "@dimen /DIMEN_22DP "android:layout_height=" @dimen/dimen_22dp "android:layout_centerinparent=" true
"/> </RelativeLayout> <relativelayout android:id=" @+id/txt_toolbar_left_root " Android:layout_width= "Match_parent "android:layout_height=" match_parent "> <textview android:id=" @ +id/txt_toolbar_left "android:layout_width=" wrap_content "android:layout_height=" Match_par
Ent "android:layout_centerinparent=" true "android:gravity=" center_vertical " Android:singleline= "true" android:textcolor= "@color/base_normal_txt_title" android:texts Ize= "@dimen/dimen_15sp"/> </RelativeLayout> </RelativeLayout> <textview Androi
D:id= "@+id/txt_toolbar_title" android:layout_width= "wrap_content" android:layout_height= "Match_parent" Android:layout_centerinparent= "true" android:gravity= "center" android:text= "title" Android:te
Xtcolor= "@color/base_normal_txt_title" android:textsize= "@dimen/dimen_17sp" android:textstyle= "bold"/> <relativelayouT android:layout_width= "wrap_content" android:layout_height= "Match_parent" Android:layout_alignpar Entright= "true" > <relativelayout android:id= "@+id/img_toolbar_right_root" android:l
Ayout_width= "@dimen/dimen_42dp" android:layout_height= "match_parent" > <imageview Android:id= "@+id/img_toolbar_right" android:layout_width= "@dimen/DIMEN_22DP" Android : layout_height= "@dimen/DIMEN_22DP" android:layout_centerinparent= "true"/> </relativelayout&
Gt
<relativelayout android:id= "@+id/txt_toolbar_right_root" android:layout_width= "Wrap_content"
android:layout_height= "Match_parent" android:layout_marginright= "@dimen/dimen_10dp" >
<textview android:id= "@+id/txt_toolbar_right" android:layout_width= "Wrap_content" android:layout_height= "Match_parent" android:layout_centerinparent= "true" android:gravity
= "Center" android:singleline= "true" android:textcolor= "@color/base_normal_txt_title" Android:textsize= "@dimen/dimen_15sp"/> </RelativeLayout> </RelativeLayout> </re Lativelayout>
4, Activityfragmentinject.java
Package com.gyq.utilstest.base;
Import COM.GYQ.UTILSTEST.R;
Import Java.lang.annotation.ElementType;
Import java.lang.annotation.Retention;
Import Java.lang.annotation.RetentionPolicy;
Import Java.lang.annotation.Target;
@Retention (retentionpolicy.runtime)
@Target ({elementtype.type}) public
@interface Activityfragmentinject {
/**
* Top Office ID
*
* @return *
/int contentviewid () default r.layout.activity_main;
/**
* exists navigationview
*
* @return *
/boolean Hasnavigationview () default false;
/**
* exists toolbar
*
* @return *
/boolean Hastoolbar () default false;
/**
* Toolbar's title ID
*
* @return
*/