• Android获取View宽高的几种方式

    通常,在我们想要获取一个view的宽高时,我们都会想到在oncreate()中使用view.getWidth()和view.getHeight()方法来获取。这看起来并没有什么问题,但它们的值却都为0,并不是我们想要的结果。为什么会这样呢?这是因为在oncreate()时view的绘制工作还未完成,也就获取不到我们想要view的宽高了。

    我们可以使用下面几种方式来获取view的宽高:

    方法1

    重写Activity中的onWindowFocusChanged()方法。

    1
    2
    3
    4
    5
    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    Log.i("textView", "width-->>" + textView.getWidth() + "--height-->>" + textView.getHeight());
    }
  • Android使用Retrofit+RxJava网络请求小结

    注:由于Retrofit2.0相较之前版本改进较大,以下方法使用Retrofit2.0的方法

    基本用法

    定义接口:

    1
    2
    3
    4
    public interface GitHubService {
    @GET("users/{user}/repos")
    Call<List<Repo>> listRepos(@Path("user") String user);
    }

    使用类 Retrofit 生成接口 GitHubService 的实现:

    1
    2
    3
    4
    Retrofit retrofit = new Retrofit.Builder()
    .baseUrl("https://api.github.com/")
    .build();
    GitHubService service = retrofit.create(GitHubService.class);

    之后就可以直接调用生成的GitHubServcie实例去发送请求:

    1
    Call<List<Repo>> repos = service.listRepos("octocat");

    注意:baseUrl和注解中url连接的”/“最好写在baseUrl的后面,而不是注解中url的前面,否则可能会出现不可预知的错误。

  • Android开发常用代码片段

    拨打电话

    1
    2
    3
    public static void call(Context context, String phoneNumber) {
    context.startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phoneNumber)));
    }

    跳转至拨号界面

    1
    2
    3
    public static void callDial(Context context, String phoneNumber) {
    context.startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + phoneNumber)));
    }

    发送短信

    1
    2
    3
    4
    5
    6
    public static void sendSms(Context context, String phoneNumber, String content) {
    Uri uri = Uri.parse("smsto:" + (TextUtils.isEmpty(phoneNumber) ? "" : phoneNumber));
    Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
    intent.putExtra("sms_body", TextUtils.isEmpty(content) ? "" : content);
    context.startActivity(intent);
    }

    判断当前App处于前台还是后台状态

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public static boolean isApplicationBackground(final Context context) {
    ActivityManager am = (ActivityManager) context
    .getSystemService(Context.ACTIVITY_SERVICE);
    @SuppressWarnings("deprecation")
    List<ActivityManager.RunningTaskInfo> tasks = am.getRunningTasks(1);
    if (!tasks.isEmpty()) {
    ComponentName topActivity = tasks.get(0).topActivity;
    if (!topActivity.getPackageName().equals(context.getPackageName())) {
    return true;
    }
    }
    return false;
    }
  • RxJava、Retrofit学习资料

    RxJava、Retrofit学习资料总结: 给Android开发者的RxJava详解 学习Retrofit和RxJava小记 Retrofit笔记 RxJava专题_泡在网上的日子 RxJava_大头鬼Bruce Retrofit2.0:有史以来最...
  • 测试Blog

    这是一篇测试Blog 这是一篇成功建立个人博客站点并能正常访问的测试Blog 使用工具:Github PagesHexo博客主题NexT 参考文章: 如何在一天之内搭建以你自己名字为域名且具备cool属性的个人博客