- 浏览: 237673 次
- 性别:
- 来自: 广州
最新评论
-
Janne:
你好 有源代码?可以发到我的邮箱里学学吗?2731049993 ...
achartengine画出动态折线图的效果 -
anbo724:
我的邮箱 anbo724@gmail.com谢谢@
achartengine画出动态折线图的效果 -
anbo724:
你好 请问有源码没《?谢谢
achartengine画出动态折线图的效果 -
weiday123:
额,觉得这个会不会占堆内存?
AdapterView、Adapter优化 -
wen742538485:
为什么没有呢?权限没加还是发创建了给你删了再想创建?是不允许重 ...
Android中为你的应用程序添加桌面快捷方式
在Android开发过程中,我们喜欢使用特效,比如抽屉效果,这样可以给人很好的体验。点击一个按钮,就像拉抽屉一样展开界面,这样的效果正是我在这里所要说明的。比如在AVD或真机上,我们都有看过这种效果。比较常用的应用是LAUNCH应用。在这个应用中我们实现了拉抽屉呈现所有的程序,在这里我参考一些别人写的博客试例讲这种实现细节。
创建一个工程。在这里我命名为LauncherDemo.在这个例子中我在main.xml文件中写入如下,贴上代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<SlidingDrawer
android:id="@+id/slidingdrawer"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:handle="@+id/handle"
android:content="@+id/content">
<Button
android:id="@+id/handle"
android:layout_width="88dip"
android:layout_height="44dip"
android:background="@drawable/handle"
/>
<LinearLayout
android:id="@+id/content"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#00ff00">
<GridView
android:id="@+id/allapps"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
</SlidingDrawer>
</LinearLayout>
看到这个SlidingDrawer控件。就像使用Button,TextView一样简单使用。
然后在LauncherActivity.java代码如下:
public class LauncherActivity extends Activity implements OnItemClickListener{
private GridView mGridView;
private Context mContext;
private PackageManager mPackageManager;
private List<ResolveInfo> mAllApps;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setupViews();
}
public void setupViews(){
mContext = LauncherActivity.this;
mPackageManager = getPackageManager(); //包管理器
mGridView = (GridView)findViewById(R.id.allapps);
bindAllApps();
mGridView.setAdapter(new GridItemAdapter(mContext, mAllApps));
mGridView.setNumColumns(4);
mGridView.setOnItemClickListener(this);
}
public void bindAllApps(){
//这里是关键哦,我们平时写的应用总有一个activity申明成这两个属性
//也就是应用的入口
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
//符合上面条件的全部查出来,并且排序
mAllApps = mPackageManager.queryIntentActivities(mainIntent, 0);
Collections.sort(mAllApps, new ResolveInfo.DisplayNameComparator(mPackageManager));
}
//gridview点击事件,点击进入相关应用
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// TODO Auto-generated method stub
ResolveInfo res = mAllApps.get(position);
//该应用的包名和主Activity
String pkg = res.activityInfo.packageName;
String cls = res.activityInfo.name;
ComponentName componet = new ComponentName(pkg, cls);
Intent i = new Intent();
i.setComponent(componet);
startActivity(i);
}
//不明白BaseAdapter的用法 我高手进阶里有
private class GridItemAdapter extends BaseAdapter{
private Context context;
private List<ResolveInfo> resInfo;
//构造函数
public GridItemAdapter(Context c,List<ResolveInfo> res){
context = c;
resInfo = res;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return resInfo.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//不明白LayoutInflater的我android高手进阶里有
convertView = LayoutInflater.from(context).inflate(R.layout.application_layout, null);
ImageView app_icon = (ImageView)convertView.findViewById(R.id.app_icon);
TextView app_tilte = (TextView)convertView.findViewById(R.id.app_title);
ResolveInfo res = resInfo.get(position);
app_icon.setImageDrawable(res.loadIcon(mPackageManager));
app_tilte.setText(res.loadLabel(mPackageManager).toString());
return convertView;
}
}
}
创建一个工程。在这里我命名为LauncherDemo.在这个例子中我在main.xml文件中写入如下,贴上代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<SlidingDrawer
android:id="@+id/slidingdrawer"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:handle="@+id/handle"
android:content="@+id/content">
<Button
android:id="@+id/handle"
android:layout_width="88dip"
android:layout_height="44dip"
android:background="@drawable/handle"
/>
<LinearLayout
android:id="@+id/content"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#00ff00">
<GridView
android:id="@+id/allapps"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
</SlidingDrawer>
</LinearLayout>
看到这个SlidingDrawer控件。就像使用Button,TextView一样简单使用。
然后在LauncherActivity.java代码如下:
public class LauncherActivity extends Activity implements OnItemClickListener{
private GridView mGridView;
private Context mContext;
private PackageManager mPackageManager;
private List<ResolveInfo> mAllApps;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setupViews();
}
public void setupViews(){
mContext = LauncherActivity.this;
mPackageManager = getPackageManager(); //包管理器
mGridView = (GridView)findViewById(R.id.allapps);
bindAllApps();
mGridView.setAdapter(new GridItemAdapter(mContext, mAllApps));
mGridView.setNumColumns(4);
mGridView.setOnItemClickListener(this);
}
public void bindAllApps(){
//这里是关键哦,我们平时写的应用总有一个activity申明成这两个属性
//也就是应用的入口
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
//符合上面条件的全部查出来,并且排序
mAllApps = mPackageManager.queryIntentActivities(mainIntent, 0);
Collections.sort(mAllApps, new ResolveInfo.DisplayNameComparator(mPackageManager));
}
//gridview点击事件,点击进入相关应用
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// TODO Auto-generated method stub
ResolveInfo res = mAllApps.get(position);
//该应用的包名和主Activity
String pkg = res.activityInfo.packageName;
String cls = res.activityInfo.name;
ComponentName componet = new ComponentName(pkg, cls);
Intent i = new Intent();
i.setComponent(componet);
startActivity(i);
}
//不明白BaseAdapter的用法 我高手进阶里有
private class GridItemAdapter extends BaseAdapter{
private Context context;
private List<ResolveInfo> resInfo;
//构造函数
public GridItemAdapter(Context c,List<ResolveInfo> res){
context = c;
resInfo = res;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return resInfo.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//不明白LayoutInflater的我android高手进阶里有
convertView = LayoutInflater.from(context).inflate(R.layout.application_layout, null);
ImageView app_icon = (ImageView)convertView.findViewById(R.id.app_icon);
TextView app_tilte = (TextView)convertView.findViewById(R.id.app_title);
ResolveInfo res = resInfo.get(position);
app_icon.setImageDrawable(res.loadIcon(mPackageManager));
app_tilte.setText(res.loadLabel(mPackageManager).toString());
return convertView;
}
}
}
发表评论
-
Android Tween动画之RotateAnimation实现图片不停旋转
2012-11-26 22:38 1093本文主要介绍Android中如何使用rotate实现图片不停旋 ... -
Android实现widget定时更新
2012-11-04 20:20 934在开发Android的widget时,第一个需要解决的问题就是 ... -
来自腾讯、谷歌、百度等名企的精选面试五十题
2012-10-07 23:08 942http://www.apkway.com/thread-90 ... -
Android 中Parcelable的作用
2012-09-24 09:53 885android提供了一种新的类型:Parcel。本类被用作封装 ... -
[Android算法] 【eoeAndroid索引】史上最牛最全android开发知识汇总
2012-09-13 09:33 1129http://www.eoeandroid.com/threa ... -
安卓航班推荐70个具有商业实战性的精品Android源码
2012-08-01 00:00 948http://www.apkway.com/thread-58 ... -
Android测试教程汇总
2012-08-02 14:51 1164http://www.apkway.com/thread-67 ... -
Service 与 Thread 的区别
2012-07-26 00:10 927Service 与 Thread 的区别 很多时候,你可能 ... -
android 使用百度地图画轨迹
2012-07-26 00:08 2652import android.content.Context ... -
android百度地图半径画圆
2012-07-26 00:07 2806Java代码 import android.content ... -
Android下获取开机时间
2012-07-26 00:05 1341我的思路是:程序里注册个广播接收器,接收开机启动的广播,当程序 ... -
android 高仿【优酷】圆盘旋转菜单 的实现
2012-07-26 00:03 1373MyAnimation.java Java代码 pack ... -
android 3D 转盘效果(附源码)
2012-07-25 23:41 1818一个仿3D的转盘效果,有倒影特效,旋转图标还可自动放大缩小。由 ... -
Android Thread
2012-07-23 10:47 1077创建新线程的常用方式: 1. 直接使用Thread创建 ... -
Android 通过手说tts中文语音包实现中文朗读
2012-07-22 17:09 1818Android 通过手说tts中文语音包实现中文朗读 ... -
Android 使用HTTPClient调用Web请求(查询手机号码区域)
2012-07-21 00:33 1270Android通过Apache HttpClient调用网上提 ... -
Android+struts2+JSON方式的手机开发
2012-07-21 00:14 1182http://topmanopensource.iteye.c ... -
android九宫格实现
2012-07-21 00:03 1020android九宫格实现,开始以为很复杂,其实只要知道了如何布 ... -
Android ListView圆角实现
2012-07-20 23:59 1229在android上开发项目,如 ... -
Android 将一个Activity转化为View显示出来
2012-07-19 10:27 2100最近看到好多opengl牛人写了些立方体,卷页之类的华丽的代码 ...
相关推荐
下面将详细介绍如何利用`DrawerLayout`来实现Android抽屉效果: 1. **引入依赖** 在Android项目中,首先需要在`build.gradle`文件中添加对`appcompat-v7`库的支持,因为它包含了`DrawerLayout`组件: ``` ...
以上就是使用`DrawerLayout`和`RecyclerView`实现Android抽屉效果的基本流程。实际开发中,你可能还需要根据具体需求进行调整,比如添加自定义头部视图、实现下拉刷新等高级功能。熟练掌握这些组件的使用,能帮助...
实现Android抽屉效果的步骤大致如下: 1. **在布局XML文件中添加DrawerLayout**:将NavigationView放置在DrawerLayout的左侧或右侧,作为抽屉内容。 2. **设置抽屉监听器**:通过设置`DrawerLayout.DrawerListener`...
这个从gitHub上整理的Android抽屉效果项目,涵盖了左滑、右滑、上滑和下滑等多种交互方式,为开发者提供了实现各种菜单效果的工具。 首先,我们来了解一下抽屉布局的基本概念。抽屉布局(DrawerLayout)是Android ...
Andorid项目源码 实现demo 超爽的android抽屉效果(源码)Andorid项目源码 实现demo 超爽的android抽屉效果(源码)Andorid项目源码 实现demo 超爽的android抽屉效果(源码)Andorid项目源码 实现demo 超爽的android...
在Android应用开发中,抽屉效果(DrawerLayout)是一种常见的设计模式,用于...以上就是关于Android抽屉效果实现的基本知识和步骤。在实际项目中,你可能需要根据具体需求进行调整,例如添加动画效果、定制菜单样式等。
总之,实现Android抽屉效果涉及了`DrawerLayout`、`ActionBarDrawerToggle`、手势识别、数据绑定、动画和响应式设计等多个方面。理解并掌握这些知识点,可以帮助开发者构建更加符合用户习惯和交互设计原则的Android...
实现Android抽屉效果的步骤如下: 1. 引入依赖:首先,在项目的build.gradle文件中添加对Android Support Library的支持,确保包括appcompat-v7库,因为DrawerLayout是这个库的一部分。例如: ```groovy ...
综上所述,这个项目提供了实现Android上下抽屉效果的方法,涉及到了触摸事件处理、动画效果、视图状态管理和用户体验等多个方面的知识。通过深入研究这个项目,开发者可以更好地理解和掌握如何在Android中创建定制的...
总之,这个源码实例提供了实现Android抽屉效果的具体实践,对于开发者来说,它是一个很好的学习资源,可以帮助理解`DrawerLayout`的工作机制,以及如何在实际项目中应用这一功能。通过深入研究和实践,开发者可以...
本教程将详细讲解如何实现标题中提到的"android抽屉效果",包括两个主要功能:屏幕分为上下两部分以及点击黑色部分可拖动。 **功能一:屏幕分上下两部分** 要实现屏幕分上下两部分的效果,我们可以使用`...
以上就是实现Android抽屉效果的关键步骤和技术细节。抽屉菜单不仅提升了用户体验,还使应用程序的导航更加直观。通过熟练掌握`DrawerLayout`的使用,开发者可以轻松地在自己的应用中实现这一流行设计模式。
首先,Android抽屉的实现主要依赖于`SlidingDrawer`组件(尽管在较新的API级别中已被弃用)或者`NavigationView`结合`DrawerLayout`。在这个案例中,`slidingdrawer`可能是指一个包含实现抽屉功能的源代码文件。`...
在Android应用开发中,"抽屉效果"通常指的是 DrawerLayout 的实现,它是Android设计支持库中的一个组件,用于创建导航抽屉(Navigation Drawer)效果。这个效果常见于许多应用程序,如Google Maps、Gmail等,它允许...
总结来说,实现Android抽屉效果涉及的关键技术点包括:`DrawerLayout`、`NavigationView`、`DrawerListener`、`ActionBarDrawerToggle`以及布局设计和触摸事件处理。通过这些技术,开发者可以创建出符合Material ...
以上就是实现Android抽屉效果的基本步骤。在实际项目中,可能还需要考虑抽屉的自定义动画、触摸反馈、过渡效果等高级特性,以提升用户体验。通过这个压缩包文件中的"超爽的android抽屉效果.rar",你可能能够找到更...
在Android应用开发中,"抽屉效果"通常指的是侧滑抽屉导航(Navigation Drawer),它是一种...以上就是实现Android抽屉效果的基本流程,通过这个功能,开发者可以为用户提供一个统一的、符合Android设计指南的导航界面。
本篇将详细介绍如何在Android中实现一个可以上下伸缩和展开的抽屉效果的下拉菜单。 首先,我们需要了解Android中的DrawerLayout,它是实现抽屉效果的基础组件。DrawerLayout允许开发者在屏幕边缘滑出一个“抽屉”,...
"安卓动画效果相关-android抽屉效果.rar"这个资源包主要关注的是Android平台上的抽屉(Drawer)效果,这种效果常见于许多应用的侧滑菜单,例如Google Maps或者Facebook应用。抽屉效果通常用于隐藏和显示一个侧边栏,...