The file containing the source code shown below is located in the corresponding directory in <sdk>/samples/android-<version>/...
/* * Copyright (C) 2007 The Android开源工程 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.example.android.apis.view; import com.example.android.apis.R; import android.app.Activity; import android.content.Intent; import android.content.pm.ResolveInfo; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.GridView; import android.widget.ImageView; import java.util.List; public class LayoutAnimation1 extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); loadApps(); setContentView(R.layout.layout_animation_1); GridView grid = (GridView) findViewById(R.id.grid); grid.setAdapter(new LayoutAnimation1.AppsAdapter()); } private List<ResolveInfo> mApps; private void loadApps() { Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); mApps = getPackageManager().queryIntentActivities(mainIntent, 0); } public class AppsAdapter extends BaseAdapter { public View getView(int position, View convertView, ViewGroup parent) { ImageView i = new ImageView(LayoutAnimation1.this); ResolveInfo info = mApps.get(position % mApps.size()); i.setImageDrawable(info.activityInfo.loadIcon(getPackageManager())); i.setScaleType(ImageView.ScaleType.FIT_CENTER); final int w = (int) (36 * getResources().getDisplayMetrics().density + 0.5f); i.setLayoutParams(new GridView.LayoutParams(w, w)); return i; } public final int getCount() { return Math.min(32, mApps.size()); } public final Object getItem(int position) { return mApps.get(position % mApps.size()); } public final long getItemId(int position) { return position; } } }