152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project/*
252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project
352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project *
452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * you may not use this file except in compliance with the License.
652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * You may obtain a copy of the License at
752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project *
852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project *
1052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
1152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
1252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * See the License for the specific language governing permissions and
1452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * limitations under the License.
1552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project */
1652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
1752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectpackage com.example.android.apis.view;
1852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
1952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport com.example.android.apis.R;
2052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
2152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.app.Activity;
2252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.content.Intent;
2352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.content.pm.ResolveInfo;
2452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.os.Bundle;
2552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.view.View;
2652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.view.ViewGroup;
2752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.widget.BaseAdapter;
2852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.widget.GridView;
2952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.widget.ImageView;
3052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
3152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport java.util.List;
3252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
3352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectpublic class LayoutAnimation5 extends Activity {
3452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project    @Override
3552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project    protected void onCreate(Bundle savedInstanceState) {
3652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        super.onCreate(savedInstanceState);
3752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
3852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        loadApps();
3952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
4052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        setContentView(R.layout.layout_animation_5);
4152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        GridView grid = (GridView) findViewById(R.id.grid);
4252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        grid.setAdapter(new AppsAdapter());
4352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project    }
4452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
4552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project    private List<ResolveInfo> mApps;
4652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
4752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project    private void loadApps() {
4852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
4952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
5052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
5152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        mApps = getPackageManager().queryIntentActivities(mainIntent, 0);
5252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project    }
5352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
5452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project    public class AppsAdapter extends BaseAdapter {
5552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        public View getView(int position, View convertView, ViewGroup parent) {
5652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project            ImageView i = new ImageView(LayoutAnimation5.this);
5752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
5852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project            ResolveInfo info = mApps.get(position % mApps.size());
5952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
6052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project            i.setImageDrawable(info.activityInfo.loadIcon(getPackageManager()));
6152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project            i.setScaleType(ImageView.ScaleType.FIT_CENTER);
6251344bdcffc3a9c8ae33891230fabe8d0526b842Romain Guy            final int w = (int) (36 * getResources().getDisplayMetrics().density + 0.5f);
6351344bdcffc3a9c8ae33891230fabe8d0526b842Romain Guy            i.setLayoutParams(new GridView.LayoutParams(w, w));
6452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project            return i;
6552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        }
6652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
6752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
6852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        public final int getCount() {
6952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project            return Math.min(32, mApps.size());
7052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        }
7152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
7252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        public final Object getItem(int position) {
7352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project            return mApps.get(position % mApps.size());
7452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        }
7552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
7652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        public final long getItemId(int position) {
7752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project            return position;
7852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        }
7952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project    }
8052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
8152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project}
82