Android 开发有用代码积累
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 开发有用代码积累的更多相关文章
- 36个Android开发常用代码片段
//36个Android开发常用代码片段 //拨打电话 public static void call(Context context, String phoneNumber) { context.s ...
- Android开发有用的站点
在github上面找到一个个人认为比較好的站点,好在能够方便下载开发工具.我的AndroidStudio就是在上面下载的.安装了一直在使用.该 网址主要收集整理Android开发所需的Android ...
- ANDROID开发之问题积累及解决方案(一)
一.activity跳转及传值 当进行activity之间的跳转时我们会遇到这样的问题.首先熟悉下activity之间跳转.Activity跳转与传值,主要是通过Intent类来连接多个Activit ...
- Android开发常用代码片段
拨打电话 public static void call(Context context, String phoneNumber) { context.startActivity( new Inten ...
- Android开发模板代码(一)——简单打开图库选择照片
首先,先贴上样本代码 //检查权限 public void checkPermission() { if (ContextCompat.checkSelfPermission(this, Manife ...
- Android开发中代码下面出现波浪线问题
在Android Studio中写代码时,经常会在一个英文单词的下面出现波浪线,这是因为系统检测到你的这个英文单词不符合规范,如下所示: 解决办法:选中这个单词,点击鼠标右键,点击:Spelling ...
- android开发之代码混淆
在${user.home}/project.properties文件中设置proguard.config属性 # To enable ProGuard to shrink and obfuscate ...
- android开发-c++代码调用so库
Android项目的CMakeLists.txt代码如下,so文件放在项目的$Project/app/src/main/jniLibs/$arch下,$arch替换为arm64-v8a armv7a等 ...
- Android开发有用的三方网站
聚合数据-免费数据调用 https://www.juhe.cn/ 有赞- 免费的微商城 http://youzan.com/ 秀米微信图文编辑器 http://xiumi.us/ 禅道项目管理软件 h ...
随机推荐
- Cocos2d-x3.x塔防游戏(保卫萝卜)从零开始(一)
一.前提: 完成Hello Game项目的创建编译. 具体参考:Cocos2dx.3x_Hello Game项目创建篇 二.本篇目标: l 说说关于塔防游戏的想法和思路 l 实现一个简单的塔防游戏 ...
- Java 周历日历
WeekCalendarUtils工具类代码,传入起始日期即可返回对应日期的周历日历,年月部分添加周数统计 import java.util.Calendar; import java.util.Da ...
- Asp.net MVC应用在IIS7上部署后403错误解决方案
1.检查服务器上是否安装了“HTTP重定向”功能和“静态内容压缩”功能(在添加/删除程序或增加角色处安装) 2.应用程序池要被配置为“集成” 3.如果IIS在.Net Framework之后安装的,需 ...
- [算法导论]哈希表 @ Python
直接寻址方式: class HashTable: def __init__(self, length): self.T = [None for i in range(length)] class Da ...
- C#-DataTable分页代码
/// <summary> /// DataTable分页并取出指定页码的数据 /// </summary> /// <param name="dtAll&qu ...
- IIS网站属性中没有ASP.NET选项
打开IIS6,右击属性,居然没有发现ASP.NET的配置选项,虽然好久没搞这个了,但是印象中绝对是有一个ASP.NET选项卡的.我很奇怪,我以为是.net framework 2.0没安装,下载下来安 ...
- Java 部分排序算法
. import java.io.*;import java.math.*;import java.util.*;public class Algr{ public static int array[ ...
- 面向.Net程序员的dump分析
背景 Dump文件是进程的内存镜像.可以把程序的执行状态通过调试器保存到dump文件中.在 Windows 系统上, dump 文件分为内核 dump 和用户态 dump 两种.前者一般用来分析内核相 ...
- 【Cocos2d-Js基础教学(5)资源打包工具的使用及资源的异步加载处理】
TexturePacker是纹理资源打包工具,支持Cocos2dx的游戏资源打包. 如果用过的同学可以直接看下面的资源的异步加载处理 首先为什么用TexturePacker? 1,节省图片资源实际大小 ...
- window环境下杀死tomcat
window环境下杀死进程 1.首先查找到占用8080端口的进程号PID是多少(tomcat默认是8080端口,假如你修改了tomcat的监听端口,请输入你的tomcat端口号) netstat -a ...