BaseActivity集成的功能方法,总有一个是你需要的

一般的,我们写某某Activity时,通常要继承BaseActivity,这样就可以使用BaseActivity里面事先写好的功能方法,那么BaseActivity是什么梗呢?下面是我实际开发中所用的BaseActivity:

public abstract class BaseActivity extends Activity {
    public Context mContext;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(layoutResID());
        mContext = this;
        initViews();
        initEvents();
    }

    // 当前Activity对应的layout布局
    protected abstract int layoutResID();

    // 专门用来处理控件的findViewById()事件
    protected abstract void initViews();

    // 处理需要实现的功能,核心代码部分
    protected abstract void initEvents();
}

这就是BaseActivity基础模型,在一个demo中如果MainActivity继承BaseActivity,那么一定是下面这样子的:

public class MainActivity extends BaseActivity {

    @Override
    protected int layoutResID() {
        return R.layout.activity_main;
    }

    @Override
    protected void initViews() {

    }

    @Override
    protected void initEvents() {

    }
}

介绍完BaseActivity后,下面写了一些功能方法吧,这些方法我在实际开发中都用过,挺好用的,拿出来和大家分享分享:

    /**
     * 跳转到指定的Activity
     *
     * @param cls 指定页面
     */
    public void startActivity(Class<?> cls) {
        startActivity(new Intent(mContext, cls));
    }

    /**
     * 跳转到指定的Activity,并传递一个参数
     *
     * @param cls   指定页面
     * @param name  自己定义的一个key,在接收时一定要和定义的名字一模一样
     * @param value name对应的值,一般来说value和name是一样(可以防止出错),
     *              而且不一定非要是String类型,也可以为boolean、int、long、double类型,
     *              但一定要注意在接收时注意类型的转换
     */
    public void startActivity(Class<?> cls, String name, String value) {
        Intent intent = new Intent(mContext, cls);
        intent.putExtra(name, value);
        startActivity(intent);
    }

    /**
     * 跳转到指定的Activity,并发送请求值
     *
     * @param cls         指定页面
     * @param requestCode 请求值
     */
    protected void startActivityForResult(Class<?> cls, int requestCode) {
        startActivityForResult(new Intent(mContext, cls), requestCode);
    }

    /**
     * 拨号
     *
     * @param phone 号码
     */
    public void dial(String phone) {
        // 判断号码是否为null或者为空
        if (phone != null && !phone.equals("")) {
            startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + phone)));
        }
    }

    /**
     * toast,传String类型
     *
     * @param text 自己手写
     */
    public void toast(String text) {
        Toast.makeText(mContext, text, Toast.LENGTH_SHORT).show();
    }

    /**
     * toast,传int类型
     *
     * @param resId 事先写好的,放在strings.xml文件中
     */
    public void toast(int resId) {
        Toast.makeText(mContext, resId, Toast.LENGTH_SHORT).show();
    }

    /**
     * 设置TextView的内容,使用该方法可让全局声明对象,findViewById以及setText三步操作变成一步完成
     *
     * @param id   TextView控件的id
     * @param text TextView的内容
     */
    public void setText(int id, String text) {
        ((TextView) findViewById(id)).setText(text);
    }

    /**
     * 展示图片,使用该方法可让全局声明对象,findViewById以及displayImage三步操作变成一步完成
     *
     * @param uri 图片地址
     * @param id  图片控件的id
     */
    public void displayImage(String uri, int id) {
        // 这里用的是ImageLoader,除此之外,Picasso、Glide、Fresco也有对应显示图片方法
        ImageLoader.getInstance().displayImage(uri, (ImageView) findViewById(id));
    }

    /**
     * 关闭当前Activity,如果Activity的布局文件中的某一控件的onClick属性定义为finish,
     * 那么app运行时点击该控件时会关闭当前页面,通常用于返回按钮点击
     *
     * @param view 
     */
    public void finish(View view) {
        finish();
    }

    /**
     * 判断TextView的内容是否为空,同样适用于EditText(判断是否输入)和Button
     *
     * @param textView TextView对象
     * @return
     */
    public boolean isEmpty(TextView textView) {
        return textView.getText().toString().trim().length() == 0;
    }

    /**
     * 获取TextView的内容,同样适用于EditText和Button
     *
     * @param textView TextView对象
     * @return
     */
    public String getText(TextView textView) {
        if (textView != null && !isEmpty(textView)) {
            return textView.getText().toString().trim();
        } else {
            return "";
        }
    }

    // 复制文字到剪贴板
    public void copyText2Clipboard(String text) {
        if (text != null && !text.trim().equals("")) {
            ((ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE)).setText(text.trim());
            toast("已复制到剪贴板");
        } else {
            toast("复制的内容不能为空");
        }
    }

    // 设置EditText的焦点,把光标放置在EditText的后面,让其看起来无违和感
    public void setCursor2RightOfEditText(EditText editText) {
        editText.setFocusable(true);
        editText.setFocusableInTouchMode(true);
        editText.requestFocus();
        editText.setSelection(editText.getText().toString().trim().length());
    }

暂时就这么多,后期还会继续补上,to be continue~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值