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 代表横屏)