`
wen742538485
  • 浏览: 237693 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

实现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;
}

    }
}
分享到:
评论

相关推荐

    超实用的android抽屉效果_动画效果.zip

    下面将详细介绍如何利用`DrawerLayout`来实现Android抽屉效果: 1. **引入依赖** 在Android项目中,首先需要在`build.gradle`文件中添加对`appcompat-v7`库的支持,因为它包含了`DrawerLayout`组件: ``` ...

    android UI 抽屉效果的实现及使用

    以上就是使用`DrawerLayout`和`RecyclerView`实现Android抽屉效果的基本流程。实际开发中,你可能还需要根据具体需求进行调整,比如添加自定义头部视图、实现下拉刷新等高级功能。熟练掌握这些组件的使用,能帮助...

    超爽的android抽屉效果.rar

    实现Android抽屉效果的步骤大致如下: 1. **在布局XML文件中添加DrawerLayout**:将NavigationView放置在DrawerLayout的左侧或右侧,作为抽屉内容。 2. **设置抽屉监听器**:通过设置`DrawerLayout.DrawerListener`...

    从gitHub上整理出Android抽屉效果,包括左滑,右滑,上滑,下滑,想要实现的任何菜单效果都有

    这个从gitHub上整理的Android抽屉效果项目,涵盖了左滑、右滑、上滑和下滑等多种交互方式,为开发者提供了实现各种菜单效果的工具。 首先,我们来了解一下抽屉布局的基本概念。抽屉布局(DrawerLayout)是Android ...

    Andorid项目源码 实现demo 超爽的android抽屉效果(源码)

    Andorid项目源码 实现demo 超爽的android抽屉效果(源码)Andorid项目源码 实现demo 超爽的android抽屉效果(源码)Andorid项目源码 实现demo 超爽的android抽屉效果(源码)Andorid项目源码 实现demo 超爽的android...

    Android 抽屉效果的实现

    在Android应用开发中,抽屉效果(DrawerLayout)是一种常见的设计模式,用于...以上就是关于Android抽屉效果实现的基本知识和步骤。在实际项目中,你可能需要根据具体需求进行调整,例如添加动画效果、定制菜单样式等。

    android 抽屉效果源码

    总之,实现Android抽屉效果涉及了`DrawerLayout`、`ActionBarDrawerToggle`、手势识别、数据绑定、动画和响应式设计等多个方面。理解并掌握这些知识点,可以帮助开发者构建更加符合用户习惯和交互设计原则的Android...

    android 抽屉效果的实现

    实现Android抽屉效果的步骤如下: 1. 引入依赖:首先,在项目的build.gradle文件中添加对Android Support Library的支持,确保包括appcompat-v7库,因为DrawerLayout是这个库的一部分。例如: ```groovy ...

    Android 之抽屉效果(上下抽屉)

    综上所述,这个项目提供了实现Android上下抽屉效果的方法,涉及到了触摸事件处理、动画效果、视图状态管理和用户体验等多个方面的知识。通过深入研究这个项目,开发者可以更好地理解和掌握如何在Android中创建定制的...

    Android应用源码之超爽的android抽屉效果.zip

    总之,这个源码实例提供了实现Android抽屉效果的具体实践,对于开发者来说,它是一个很好的学习资源,可以帮助理解`DrawerLayout`的工作机制,以及如何在实际项目中应用这一功能。通过深入研究和实践,开发者可以...

    android抽屉效果实现

    本教程将详细讲解如何实现标题中提到的"android抽屉效果",包括两个主要功能:屏幕分为上下两部分以及点击黑色部分可拖动。 **功能一:屏幕分上下两部分** 要实现屏幕分上下两部分的效果,我们可以使用`...

    超爽的android抽屉效果_Android.rar

    以上就是实现Android抽屉效果的关键步骤和技术细节。抽屉菜单不仅提升了用户体验,还使应用程序的导航更加直观。通过熟练掌握`DrawerLayout`的使用,开发者可以轻松地在自己的应用中实现这一流行设计模式。

    Android 抽屉实现

    首先,Android抽屉的实现主要依赖于`SlidingDrawer`组件(尽管在较新的API级别中已被弃用)或者`NavigationView`结合`DrawerLayout`。在这个案例中,`slidingdrawer`可能是指一个包含实现抽屉功能的源代码文件。`...

    Android抽屉效果上下抽屉

    在Android应用开发中,"抽屉效果"通常指的是 DrawerLayout 的实现,它是Android设计支持库中的一个组件,用于创建导航抽屉(Navigation Drawer)效果。这个效果常见于许多应用程序,如Google Maps、Gmail等,它允许...

    Android程序研发源码超爽的android抽屉效果.zip

    总结来说,实现Android抽屉效果涉及的关键技术点包括:`DrawerLayout`、`NavigationView`、`DrawerListener`、`ActionBarDrawerToggle`以及布局设计和触摸事件处理。通过这些技术,开发者可以创建出符合Material ...

    安卓开发-超爽的android抽屉效果.zip

    以上就是实现Android抽屉效果的基本步骤。在实际项目中,可能还需要考虑抽屉的自定义动画、触摸反馈、过渡效果等高级特性,以提升用户体验。通过这个压缩包文件中的"超爽的android抽屉效果.rar",你可能能够找到更...

    android抽屉效果

    在Android应用开发中,"抽屉效果"通常指的是侧滑抽屉导航(Navigation Drawer),它是一种...以上就是实现Android抽屉效果的基本流程,通过这个功能,开发者可以为用户提供一个统一的、符合Android设计指南的导航界面。

    Android之抽屉效果的下拉菜单(上下伸缩和展开)

    本篇将详细介绍如何在Android中实现一个可以上下伸缩和展开的抽屉效果的下拉菜单。 首先,我们需要了解Android中的DrawerLayout,它是实现抽屉效果的基础组件。DrawerLayout允许开发者在屏幕边缘滑出一个“抽屉”,...

    安卓动画效果相关-android抽屉效果.rar

    "安卓动画效果相关-android抽屉效果.rar"这个资源包主要关注的是Android平台上的抽屉(Drawer)效果,这种效果常见于许多应用的侧滑菜单,例如Google Maps或者Facebook应用。抽屉效果通常用于隐藏和显示一个侧边栏,...

Global site tag (gtag.js) - Google Analytics