Android -- 经验分享(三)
目录
- 获取系统版本号
- 获取系统信息
- 获取安装路径和已安装程序列表
- 获取图片、应用名、包名
- 解决listview上Item上有按钮时item本身不能点击的问题
- 不让文本框输入中文
- 获取屏幕宽高
- 将TabWidget显示在屏幕下方
- 禁止软键盘弹出
- 调用Android其他Context的Activity
- 程序中安装apk
- 退出程序时清除通知中信息
- 阴影字体设置
- 输入框不挤压activity布局
获取系统版本号
- PackageInfo info = this.getPackageManager().getPackageInfo(this.getPackageName(), 0);
- int versionCode=nfo.versionCode
- string versionName=info.versionNam
获取系统信息
- String archiveFilePath="sdcard/download/Law.apk";//安装包路径
- PackageManager pm = getPackageManager();
- PackageInfo info = pm.getPackageArchiveInfo(archiveFilePath, PackageManager.GET_ACTIVITIES);
- if(info != null){
- ApplicationInfo appInfo = info.applicationInfo;
- String appName = pm.getApplicationLabel(appInfo).toString();
- String packageName = appInfo.packageName; //得到安装包名称
- String version=info.versionName; //得到版本信息
- Toast.makeText(test4.this, "packageName:"+packageName+";version:"+version, Toast.LENGTH_LONG).show();
- Drawable icon = pm.getApplicationIcon(appInfo);//得到图标信息
- TextView tv = (TextView)findViewById(R.id.tv); //显示图标
- tv.setBackgroundDrawable(icon);
获取安装路径和已安装程序列表
- //(1)android中获取当前程序路径
- getApplicationContext().getFilesDir().getAbsolutePath()
- //(2)android取已安装的程序列表
- List<PackageInfo> packageInfoList = getPackageManager().getInstalledPackages(0);
获取图片、应用名、包名
- PackageManager pManager = MessageSendActivity.this.getPackageManager();
- List<PackageInfo> appList = Utils.getAllApps(MessageSendActivity.this);
- for(int i=0;i<appList.size();i++) {
- PackageInfo pinfo = appList.get(i);
- ShareItemInfo shareItem = new ShareItemInfo();
- //set Icon
- shareItem.setIcon(pManager.getApplicationIcon(pinfo.applicationInfo));
- //set Application Name shareItem.setLabel(pManager.getApplicationLabel(pinfo.applicationInfo).toString());
- //set Package Name shareItem.setPackageName(pinfo.applicationInfo.packageName);
- }
解决listview上Item上有按钮时item本身不能点击的问题
- //1. 在item试图上面添加代码:
- android:descendantFocusability="blocksDescendants"
- //2.在listview里添加代码
- android:focusable="true"
不让文本框输入中文
- android:digits="1234567890qwertyuiopasdfghjklzxcvbnm`-=[]\;,./~!@#$%^*()_+}{:?&<>"'"
- <!--这样就不会输入中文了-->
获取屏幕宽高
- DisplayMetrics displayMetrics = new DisplayMetrics();
- this.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
- int height = displayMetrics.heightPixels;
- int width = displayMetrics.widthPixels;
将TabWidget显示在屏幕下方
- <!---设置TabWidget的属性-->
- android:layout_alignParentBottom="true"
为了让tabHost显示在下方,要将RadioGroup的layout_gravity设置为bottom,再将FrameLayout的 layout_weight设置为1,这样就可以将RadioGroup撑到最下方。style="@style/main_tab_bottom"里面定义了样式文件
禁止软键盘弹出
EditText有焦点(focusable为true)阻止输入法弹出
- editText.setInputType(InputType.TYPE_NULL); // 关闭软键盘 当EidtText无焦点(focusable=false)时阻止输入法弹出
- InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
- imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
在xml文件中EditText标签有一个属性android:editable="false"和android:numeric="integer"
android:numeric="integer"表示只允许输入数字,此属性可以限制用户只能输入数字内容。
android:editable表示是否可以输入内容TRUE表示可以输入,false表示不允许输入内容;
当为android:editable="false"时,点击输入框,虚拟键盘是显示不出来的,不过当设置了android:editable=""属性时,不管是false还是true,在其后加入android:numeric="integer"属性时,是可以输入数字内容了
调用Android其他Context的Activity
- Context c = createPackageContext("chroya.demo", Context.CONTEXT_INCLUDE_CODE | Context.CONTEXT_IGNORE_SECURITY);
- //载入这个类
- Class clazz = c.getClassLoader().loadClass("chroya.demo.Main");
- //新建一个实例
- Object owner = clazz.newInstance();
- //获取print方法,传入参数并执行
- Object obj = clazz.getMethod("print", String.class).invoke(owner, "Hello");
这个方法有两个参数:
1、packageName 包名,要得到Context的包名
2、flags 标志位,有CONTEXT_INCLUDE_CODE和CONTEXT_IGNORE_SECURITY两个选项。 CONTEXT_INCLUDE_CODE的意思是包括代码,也就是说可以执行这个包里面的代码。CONTEXT_IGNORE_SECURITY的意思 是忽略安全警告,如果不加这个标志的话,有些功能是用不了的,会出现安全警告。
程序中安装apk
- Intent intent = new Intent();
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- intent.setAction(android.content.Intent.ACTION_VIEW);
- intent.setDataAndType(Uri.fromFile(“APK”),"application/vnd.android.package-archive");
- startActivity(intent);
退出程序时清除通知中信息
- NotificationManager nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
- nm.cancelAll();
阴影字体设置
- <TextView android:id="@+id/tvText1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="text1"
- android:textSize="30sp"
- android:textStyle="bold"
- android:textColor="#FFFFFF"
- android:shadowColor="#ff0000ff"
- android:shadowDx="5"
- android:shadowDy="5"
- android:shadowRadius="10"/>
android:shadowColor 阴影颜色
android:shadowDx 阴影的水平偏移量
android:shadowDy 阴影的垂直偏移量
android:shadowRadius 阴影的范围
输入框不挤压activity布局
在manifest文件activity下加:
- android:windowSoftInputMode="adjustPan"
我是天王盖地虎的分割线
Android -- 经验分享(三)的更多相关文章
- 关于写SpringBoot+Mybatisplus+Shiro项目的经验分享三:问题2
框架: SpringBoot+Mybatisplus+Shiro 简单介绍:关于写SpringBoot+Mybatisplus+Shiro项目的经验分享一:简单介绍 搜索框是该项目重要的一环,由于涉及 ...
- Android -- 经验分享(二)
目录 自定义两个View进行画图,让 ...
- Android -- 经验分享
目录 代码中安装 ...
- MySQL 性能优化的最佳20多条经验分享(三)(转)
16. 垂直分割 "垂直分割"是一种把数据库中的表按列变成几张表的方法,这样可以降低表的复杂度和字段的数目,从而达到优化的目的.(以前,在银行做过项目,见过一张表有100多个字段, ...
- 总结ThinkPHP使用技巧经验分享(三)
add方法返回主键(id)的值在往数据表中添加数据时调用add方法,默认返回值就是刚添加的id值,就不用再去查询了. save方法返回值的判断在修改数据时,如果修改成功返回的是被修改的记录数0,1,2 ...
- Android内存优化解决 资料和总结的经验分享
在前公司做一个图片处理的应用时, 项目交付的时候,客户的手机在运行应用的时候,一直在崩溃,而这个异常就是OutOfMemory的错误,简称为OOM, 搞得我们也是极其的崩溃,最后 ,我们是通过网上搜集 ...
- android平台短视频技术之 视频编辑的经验分享.
android平台短视频技术之 视频编辑的经验分享. 提示一: 各位看官,这里分享的是视频编辑,即剪切/拼接/分离/合并/涂鸦/标记/叠加/滤镜等对视频的编辑操作.不是流媒体网络播放等功能,请注意. ...
- 开源分享三(炫酷的Android Loading动画)
开源分享三(炫酷的Android Loading动画) 分享GitHub上的一些Loading,为了提升产品用户体验,一个好的Loading必然是不可缺少的,对于一些耗时需要用户等待的页面来说会转移用 ...
- fir.im Weekly - 8 个不能错过的 iOS / Android 技术分享
本期 fir.im Weekly 收集了 2 月下旬新鲜出炉的 iOS /Android 技术分享.源码等,iOS 中图片技术的解压缩.逆向实战.iOS SDK 实践,Android架构思考.Andr ...
随机推荐
- 【SQL SERVER】T-SQL 字符串前加 N 是什么意思
比如 select @status = N'stopped' 那么其中的字符串 stopped 前面为什么要加 N 呢?而且我们发现有些地方加 N 与否都没有影响,有些地方又必须加 N. N 在这里表 ...
- 洛谷P3275 [SCOI2011]糖果 [差分约束系统]
题目传送门 糖果 题目描述 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比 ...
- 【BZOJ 2671】 2671: Calc (数论,莫比乌斯反演)
2671: Calc Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 303 Solved: 157 Description 给出N,统计满足下面条件 ...
- 【UOJ #108】【APIO 2013】TOLL
http://uoj.ac/problem/108 好神的一道题啊. 原图边权互不相同是重点! 如果有一个点集,有两组边集,要求这两组边集的并集的最小生成树,可以对两组边集分别求一下最小生成树构成新的 ...
- PHP 笔记——String 字符串
1. 定义 单引号括起来的字符串被原样输出. 双引号字符串中的变量被PHP解析为变量值. 2. 获取字符串长度 strlen(string $string): int 在utf-8下,汉字占3个字符, ...
- 数据准备<1>:数据质量检查-理论篇
数据行业有一句很经典的话--"垃圾进,垃圾出"(Garbage in, Garbage out, GIGO),意思就是,如果使用的基础数据有问题,那基于这些数据得到的任何产出都是没 ...
- hdu 3089 (快速约瑟夫环)
Josephus again Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- Android:Date、String、Long三种日期类型之间的相互转换
源地址:http://blog.csdn.net/wangyanguiyiyang date类型转换为String类型: // formatType格式为yyyy-MM-dd HH:mm:ss//yy ...
- hibernate核心及常用技术
一.hibernate介绍 1.hibernate概述 hibernate是轻量级Java EE持久层解决方案,管理java类到数据库表的映射(ORM:对象关系型数据映射),并提供数据查询获取的方法. ...
- bzoj 1067 分情况讨论
这道题考察人的严谨,各种情况分类讨论. #include <cstdio> #include <algorithm> #include <map> #define ...