Launcher的简单介绍
Launcher
什么是Launcher?
Launcher是安卓系统中的桌面启动器,安卓系统的桌面UI统称为Launcher,Launcher的启动实际上就是启动一个Activity(Launcher.java)。
当我们点击手机的home键时,实际上就是启动桌面管理器,会启动LaunCher.java Activity。
我们也可以将自己的应用程序中的Activity作为Launcher,只要在我们的Activity注册时,在意图过滤器中添加category:android:name="android.intent.category.HOME"和android:name="android.intent.category.DEFAULT",这样当我们点击home键时会弹窗让我们选择开启那个Lanuncher。
清单文件
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
<category android:name="android.intent.category.HOME"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
</application>
//查询所有的应用程序并显示 ResolveInfo的使用和获取所有安装程序列表的实现
Activity:
publicclass ShowDevelopments extends Activity {
private GridView show_developments;
private List<ResolveInfo> info;
@Override
protected void onCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_developments);
show_developments=(GridView)findViewById(R.id.show_developments);
info=newArrayList<ResolveInfo>();
getData();
MyAdapter adapter=newMyAdapter(info);
show_developments.setAdapter(adapter);
show_developments.setOnItemClickListener(newAdapterView.OnItemClickListener() {
@Override
public voidonItemClick(AdapterView<?> parent, View view,
intposition, long id) {
start(position);
}
});
}
/**
* 界面跳转的方法:ComponentName的使用
*/
private void start(int i){
ResolveInfoinfo = this.info.get(i);
//该应用的包名
String pkg =info.activityInfo.packageName;
//应用的主activity类
String cls =info.activityInfo.name;
ComponentName componet = newComponentName(pkg, cls);
Intent intent = new Intent();
intent.setComponent(componet);
startActivity(intent);
}
/**
* 获取所有的安装的应用程序
*/
private void getData(){
IntentmainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
// new ImageView(ShowDevelopments.this);
info = getPackageManager().queryIntentActivities(mainIntent, 0);
}
private class MyAdapter extendsBaseAdapter{
privateList<ResolveInfo> info;
private LayoutInflaterinflater;
privateMyAdapter(List<ResolveInfo> info){
this.info=info;
inflater=getLayoutInflater();
}
@Override
public int getCount() {
returninfo!=null?info.size():0;
}
@Override
public Object getItem(intposition) {
returninfo.get(position);
}
@Override
public long getItemId(intposition) {
return position;
}
@Override
public View getView(intposition, View convertView, ViewGroup parent) {
View[] view=newView[2];
if(convertView==null){
convertView=inflater.inflate(R.layout.item_showdata,null);
view[0]=convertView.findViewById(R.id.show_image);
view[1]=convertView.findViewById(R.id.chengxu);
convertView.setTag(view);
}
view=(View[])convertView.getTag();
((TextView)view[1]).setText(info.get(position).loadLabel(getPackageManager()));
((ImageView)view[0]).setImageDrawable((info.get(position).loadIcon(getPackageManager())));
return convertView;
}
}
}
Launcher的简单介绍相关推荐
- Android中PackageManager类的简单介绍
1.PackageManager这个类,表层意思是包管理者,既然可以管理包,那么包下的一些东西便可以获取,其中可以获取应用图标和应用名称以及包名. 通过下面一行代码实例化PackageManager类 ...
- java自学——java的基本讲解和变量、字符串、运算符的简单介绍
java自学--java的基本讲解和变量.数组.字符串.运算符的简单介绍 hello world程序 java程序的结构 java语句的组成介绍 关键字 标识符 标识符的命名规则 分隔符 注释符 空白 ...
- 遗传算法的简单介绍以及模式定理的简单证明
遗传算法 遗传算法(Genetic Algorithm,GA),最早是由美国的John holland在20世纪70年代提出.算法通过模拟达尔文生物进化论的自然选择以及遗传学机理的生物进化过程来搜 ...
- 2021年大数据ELK(十八):Beats 简单介绍和FileBeat工作原理
全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 Beats 简单介绍和FileBeat工作原理 一.Beats 二.FileB ...
- 2021年大数据ELK(十五):Elasticsearch SQL简单介绍
全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 Elasticsearch SQL简单介绍 一.SQL与Elasticsear ...
- 2021年大数据ELK(二):Elasticsearch简单介绍
全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 一.Elasticsearch简介 1.介绍 2.创始人 二.E ...
- iOS开发UI篇—多控制器和导航控制器简单介绍
iOS开发UI篇-多控制器和导航控制器简单介绍 一.多控制器 一个iOS的app很少只由一个控制器组成,除非这个app极其简单.当app中有多个控制器的时候,我们就需要对这些控制器进行管理 有多个vi ...
- 简单介绍一下R中的几种统计分布及常用模型
统计学上分布有很多,在R中基本都有描述.因能力有限,我们就挑选几个常用的.比较重要的简单介绍一下每种分布的定义,公式,以及在R中的展示. 统计分布每一种分布有四个函数:d――density(密度函数) ...
- LVS(Linux Virtual Server)三种负载均衡模型和十种调度的简单介绍
LVS(Linux Virtual Server)三种负载均衡模型和十种调度的简单介绍 LVS (Linux Virtual Server) LVS(Linux Virtual Server)其实就是 ...
最新文章
- asp.net 连接 Access 的几种方法
- python3字符编码str_聊聊Python 3 的字符串:str 和 bytes 的区别
- C语言再学习 -- 文件
- 你真的会搜索?低效的你简直在浪费生命(三)(终结篇)
- BlazeDS入门教程-很详细-赞原创作者一个
- 手机相机里面的m_荣耀V30 PRO详细评测:Matrix Camera相机矩阵开启5G视频时代
- 【Linux】shell脚本执行错误 $‘\r‘:command not found
- 《Python密码学编程》——2.6 本书的文本换行
- 一文了解SG2525AN
- 矢量绘图软件源码定制开发,类似visio绘图,大量复合图元模板,可编程动态控制图元
- 管理用计算机修理费属于什么会计科目,维修费是什么会计科目
- idea全局搜索问题
- 算术移位 VS 逻辑移位
- HGETALL key
- linux vc 调试方法,VC实现【API钩取】【调试法】附加调试器
- Java多线程之JUC
- STM32H743多路串口调试经验总结(HAL库)
- 利用visio 画思维导图
- 大学的计算机社团都学什么,大学有什么好玩的社团 大学生必入的5个社团
- Centos7 Radius服务搭建