Android开发需求变化快,开发周期要求尽量短,接下来一系列文章从实际使用出发总结一些常用的代码片段,便于查找,也为后来人提供一份参考。

1.获取Manifest的基本信息(升级页面和软件关于页面一般会使用到)

Context mContext = XXXApplication.getInstance().getApplicationContext(); //获取Application的Context ,当然也可以获取当前的Activity的Context, Application一般是单例
packageName = mContext.getPackageName(); //获取包名,也就是manifest中的package选项的值
PackageInfo info = mContext.getPackageManager().getPackageInfo(
mContext.getPackageName(), 0); // String versionName = info.versionName;
int versionCode = info.versionCode;

2.获取手机屏幕参数(对于屏幕适配很重要,毕竟Android手机的屏幕种类太多了)

Resources resources = XXXApplication.getInstance().getResources();
float scale = resources.getDisplayMetrics().density;//屏幕密度因子,用于在px与dp之间转化
float scaledDensity = resources.getDisplayMetrics().scaledDensity;
float disPlayWidth = resources.getDisplayMetrics().widthPixels;
float disPlayHeight = resources.getDisplayMetrics().heightPixels;

  public static int dip2px(float dp) {
    return (int) (dp * scale + 0.5f);
  }

  public static int px2dip(float px) {
  return (int) (px / scale + 0.5f);
  }

  后面专门用篇文章来介绍一下我对不同屏幕适配的心得,今天就先介绍上面的代码。

3. 隐藏软键盘

InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0); //在含有EditText的页面,有可能一进入该Activity软键盘就弹出来,可以通过以下方法来禁止  getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

  

4. 安装APK(比如说下载了升级软件的时候,需要安装替换旧版)

File apkfile = new File(apkFilePath);
if (!apkfile.exists()) {
return;
} Intent i = new Intent(Intent.ACTION_VIEW);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setDataAndType(Uri.parse("file://" + apkfile.toString()), "application/vnd.android.package-archive");
mContext.startActivity(i);

5. 设置TextView的文字大小

  TextView通过getTextSize()返回的值是px,setTextSize()却是sp,所以一般不能直接用getTextSize()获取的值来设置。可以指定setTextSize()的单位:

  TypedValue.COMPLEX_UNIT_PX : PX

  TypedValue.COMPLEX_UNIT_SP : SP

  TypedValue.COMPLEX_UNIT_DIP : DIP

  可以这样使用:

 mTextView.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.text_size)); //使用getDimension 是为了屏幕适配,这里先点到为止

  

6. 手机震动功能

import android.app.Activity;
import android.app.Service;
import android.os.Vibrator; public class Myvibrator {
public static void Vibrate(final Activity activity, long milliseconds) {
Vibrator vib = (Vibrator) activity.getSystemService(Service.VIBRATOR_SERVICE);
vib.vibrate(milliseconds);
}
public static void Vibrate(final Activity activity, long[] pattern,boolean isRepeat) {
Vibrator vib = (Vibrator) activity.getSystemService(Service.VIBRATOR_SERVICE);
vib.vibrate(pattern, isRepeat ? 1 : -1);
}
}

  在manifest文件中需要增加权限:<uses-permission android:name="android.permission.VIBRATE" />  。通过上面操作,我们可以使用Myvibrator所定义的函数了。两个Vibrate函数的参数简单介绍如下:

  final Activity activity :调用该方法的Activity实例
  long milliseconds :震动的时长,单位是毫秒

  long[] pattern :自定义震动模式 。数组中数字的含义依次是[静止时长,震动时长,静止时长,震动时长。。。]时长的单位是毫秒

  boolean isRepeat : 是否反复震动,如果是true,反复震动,如果是false,只震动一次

7. 软键盘弹出不把整个布局顶起来

  在manifest文件对应的activity中设置:android:windowSoftInputMode="adjustPan" 属性

8. 设置Activity为横屏或者竖屏

  在manifest文件对应的activity中设置:android:screenOrientation="portrait" (竖屏,landscape 代表横屏)

Android 开发有用代码积累的更多相关文章

  1. 36个Android开发常用代码片段

    //36个Android开发常用代码片段 //拨打电话 public static void call(Context context, String phoneNumber) { context.s ...

  2. Android开发有用的站点

    在github上面找到一个个人认为比較好的站点,好在能够方便下载开发工具.我的AndroidStudio就是在上面下载的.安装了一直在使用.该 网址主要收集整理Android开发所需的Android ...

  3. ANDROID开发之问题积累及解决方案(一)

    一.activity跳转及传值 当进行activity之间的跳转时我们会遇到这样的问题.首先熟悉下activity之间跳转.Activity跳转与传值,主要是通过Intent类来连接多个Activit ...

  4. Android开发常用代码片段

    拨打电话 public static void call(Context context, String phoneNumber) { context.startActivity( new Inten ...

  5. Android开发模板代码(一)——简单打开图库选择照片

    首先,先贴上样本代码 //检查权限 public void checkPermission() { if (ContextCompat.checkSelfPermission(this, Manife ...

  6. Android开发中代码下面出现波浪线问题

    在Android Studio中写代码时,经常会在一个英文单词的下面出现波浪线,这是因为系统检测到你的这个英文单词不符合规范,如下所示: 解决办法:选中这个单词,点击鼠标右键,点击:Spelling ...

  7. android开发之代码混淆

    在${user.home}/project.properties文件中设置proguard.config属性 # To enable ProGuard to shrink and obfuscate ...

  8. android开发-c++代码调用so库

    Android项目的CMakeLists.txt代码如下,so文件放在项目的$Project/app/src/main/jniLibs/$arch下,$arch替换为arm64-v8a armv7a等 ...

  9. Android开发有用的三方网站

    聚合数据-免费数据调用 https://www.juhe.cn/ 有赞- 免费的微商城 http://youzan.com/ 秀米微信图文编辑器 http://xiumi.us/ 禅道项目管理软件 h ...

随机推荐

  1. Entity Framework 5.0基础系列

    1.Entity Framework简介 http://www.cnblogs.com/aehyok/p/3315991.html 2.Entity Framework DBFirst尝试http:/ ...

  2. 如何编写一个PHP的C扩展

    为什么要用C扩展 C是静态编译的,执行效率比PHP代码高很多.同样的运算代码,使用C来开发,性能会比PHP要提升数百倍.IO操作如CURL,因为耗时主要在IOWait上,C扩展没有明显优势. 另外C扩 ...

  3. python实现自动发送微博,当自己写博客时同步上去。

    一.需求: 自己在github上搭建一个基于Jekyll的博客(http://beginman.cn/),每次写完博客后就要push上去,博客写的再好,基本上没人访问,为了增加访问量,就想利用起来微博 ...

  4. WPS 文字排版 标题回车后标题号自动增加

    飞思卡来互联网提供全球性的 看了看 风格的呵呵 合格否d合格否的 secure embedded嵌入式解 个国家和地区,注册了成千上万项专利,产品面向 物联网,汽车电子,消费电子,工业及网络设备等市 ...

  5. Cocos2d-x3.x塔防游戏(保卫萝卜)从零开始(一)

    一.前提: 完成Hello Game项目的创建编译. 具体参考:Cocos2dx.3x_Hello Game项目创建篇 二.本篇目标: l  说说关于塔防游戏的想法和思路 l  实现一个简单的塔防游戏 ...

  6. Linux: Set OR Change The Library Path

    Linux: Set OR Change The Library Path by NIX CRAFT on APRIL 9, 2010 · 3 COMMENTS· LAST UPDATED AUGUS ...

  7. What is a Statistic?

    from: https://controls.engin.umich.edu/wiki/index.php/Basic_statistics:_mean,_median,_average,_stand ...

  8. Codeforces Round #379 (Div. 2) D. Anton and Chess 水题

    D. Anton and Chess 题目连接: http://codeforces.com/contest/734/problem/D Description Anton likes to play ...

  9. 正则指引-字符组demo

    class Program { static void Main(string[] args) { string str = "b"; var result1 = Regex.Is ...

  10. Kafka - SQL 引擎分享

    1.概述 大多数情况下,我们使用 Kafka 只是作为消息处理.在有些情况下,我们需要多次读取 Kafka 集群中的数据.当然,我们可以通过调用 Kafka 的 API 来完成,但是针对不同的业务需求 ...