SlidingDrawer开发简易Launcher

SlidingDrawer开发简易Launcher_第1张图片

1.主布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <SlidingDrawer
        android:id="@+id/slidingdrawer"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:content="@+id/content"
        android:handle="@+id/handle"
        android:orientation="vertical" >

        <Button
            android:id="@+id/handle"
            android:layout_width="88dip"
            android:layout_height="44dip" />

        <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>

2.Grid每一项的布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/app_icon"
        android:layout_width="88dip"
        android:layout_height="44dip" />

    <TextView
        android:id="@+id/app_title"
        android:layout_width="88dip"
        android:layout_height="44dip" />

</LinearLayout>

3.主Acitvity

package com.test;

import java.util.Collections;
import java.util.List;

import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.TextView;

public class SlidingDrawerActivity 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 = SlidingDrawerActivity.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() {
		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));
	}
	@Override
	public void onItemClick(AdapterView<?> parent, View view, int position,
			long id) {
		ResolveInfo res = mAllApps.get(position);
		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);
	}
	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() {
			return resInfo.size();
		}
		@Override
		public Object getItem(int position) {
			return null;
		}
		@Override
		public long getItemId(int position) {
			return 0;
		}
		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			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;
		}
	}
}


你可能感兴趣的:(SlidingDrawer开发简易Launcher)