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