《第一行代码》实用知识

来源:互联网 发布:富豪移民 知乎 编辑:程序博客网 时间:2024/06/15 02:32

1.基础活动类:便于知道启动是哪个活动类,其他活动类继承基类即可。

public class BaseActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        Log.d("BaseActivity", getClass().getSimpleName());        ActivityCollector.addActivity(this);    }    @Override    protected void onDestroy() {        super.onDestroy();        ActivityCollector.removeActivity(this);    }}



2. 活动管理器:管理所有的活动,便于批量销毁活动,在某个活动需要一次性退出程序的时候,调用ActivityConllector.finishAll();即可

public class ActivityCollector {        public static List<Activity> activities=new ArrayList<Activity>();        public static void addActivity(Activity activity){        activities.add(activity);    }        public static void removeActivity(Activity activity){        activities.remove(activity);    }        public static void finishAll(){        for(Activity activity:activities){            if(!activity.isFinishing()){                activity.finish();            }        }    }}

3.启动活动的最佳方式:其他活动要启动这个类,只需要调用SecondActivity.actionStart(FirstActivity.this,"data1","data2");参数也一目了然。

public class SecondActivity extends BaseActivity {    public static void actionStart(Context context,String data1,String data2){        Intent intent=new Intent(context,SecondActivity.class);        intent.putExtra("param1",data1);        intent.putExtra("param2",data2);        context.startActivity(intent);    }}


4.创建自定义控件:共用标题栏

标题布局title.xml,引用方式:<include layout="@layout/title",注意需要在活动中隐藏系统自带标题栏。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent" android:layout_height="wrap_content"    android:background="#333783">    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/title_back"        android:layout_margin="5dip"        android:layout_gravity="center"        android:text="Back"/>    <TextView        android:layout_width="0dip"        android:layout_height="wrap_content"        android:id="@+id/title_text"        android:layout_gravity="center"        android:gravity="center"        android:layout_weight="1"        android:text="Title Text"        android:textColor="#fff"        android:textSize="24sp"/>    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/title_edit"        android:layout_gravity="center"        android:layout_margin="5dip"        android:text="Edit"/></LinearLayout><pre name="code" class="java">public class TitleLayout extends LinearLayout {    public TitleLayout(Context context,AttributeSet attrs){        super(context, attrs);        LayoutInflater.from(context).inflate(R.layout.title, this);        Button titleBack=(Button)findViewById(R.id.title_back);        Button titleEdit=(Button)findViewById(R.id.title_edit);        titleBack.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                ((Activity)getContext()).finish();            }        });        titleEdit.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                Toast.makeText(getContext(),"clicked Edit",Toast.LENGTH_SHORT).show();            }        });    }}


界面引用自定义控件:

<com.coolweather.app.activity.TitleLayout        android:layout_width="match_parent"        android:layout_height="wrap_content">    </com.coolweather.app.activity.TitleLayout>


5.可以全局获得Context,Applicaton类在程序启动的时候,会自动初始化这个类。在AndroidMainfest.xml还要进行制定application的name。

public class MyApplication extends Application {    private static Context context;    @Override    public void onCreate() {        context=getApplicationContext();    }        public static Context getContext(){        return context;    }}

6.自定义日志类

import android.util.Log;/** * 日志类,用于应用上线之后全局控制日志输出,只需将LEVEL等于NOTHING即可停止输出日志。 * Created by yiuon on 2016/2/10. */public class LogUtil {    public static final int VERBOSE=1;    public static final int DEBUG=2;    public static final int INFO=3;    public static final int WARN=4;    public static final int ERROR=5;    public static final int NOTHING=6;    public static final int LEVEL=VERBOSE;        public static void v(String tag,String msg){        if(LEVEL<VERBOSE){            Log.v(tag,msg);        }    }    public static void d(String tag,String msg){        if(LEVEL<=DEBUG){            Log.d(tag, msg);        }    }    public static void i(String tag,String msg){        if(LEVEL<=INFO){            Log.i(tag, msg);        }    }    public static void w(String tag,String msg){        if(LEVEL<=WARN){            Log.w(tag, msg);        }    }    public static void e(String tag,String msg){        if(LEVEL<=ERROR){            Log.e(tag, msg);        }    }}



1 0
原创粉丝点击