zoukankan      html  css  js  c++  java
  • 安卓学习-activity-LauncherActivity

    LauncherActivity

    可以启动别的程序的窗口,当然了,自己直接写个普通的activity也可以实现

     

    item.xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:paddingTop="20dp"
        android:paddingBottom="20dp"
         >
    
        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:paddingRight="20dp"
            android:src="@drawable/ic_launcher" />
    
        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_toRightOf="@+id/imageView1"
            android:text="Large Text"
            android:textAppearance="?android:attr/textAppearanceLarge" />
    
        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/textView1"
            android:layout_below="@+id/textView1"
            android:text="Small Text"
            android:textAppearance="?android:attr/textAppearanceSmall" />
    
    </RelativeLayout>
    View Code

    MainActivity.java

    继承LauncherActivity,需要设置ListAdapter,并实现Intent intentForPosition(int position)

    public class MainActivity extends LauncherActivity {
    
        List<String> classes = new ArrayList<String>();
    
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            // 获取应用程序
            List<PackageInfo> pags = getPackageManager().getInstalledPackages(0);
    
            List<Map<String, Object>> data = new ArrayList<Map<String, Object>>();
    
            for (int i = 0; i < pags.size(); i++) {
                PackageInfo pag = pags.get(i);
                // 用户程序
                //if ((pag.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
                    Map<String, Object> map = new HashMap<String, Object>();
                    // 程序名字
                    map.put("name",pag.applicationInfo.loadLabel(getPackageManager()).toString());
                    // 图标
                    map.put("drawable",pag.applicationInfo.loadIcon(getPackageManager()));
                    map.put("packageName", pag.packageName);
    
                    classes.add(pag.packageName);
    
                    data.add(map);
    
                //}
            }
    
            SimpleAdapter sa = new SimpleAdapter(MainActivity.this, data,
                    R.layout.item,
                    new String[] { "name", "drawable", "packageName" }, new int[] {
                            R.id.textView1, R.id.imageView1, R.id.textView2 });
            setListAdapter(sa);
            // 将drawablei显示到imageview里
            sa.setViewBinder(new ViewBinder() {
                public boolean setViewValue(View view, Object data,
                        String textRepresentation) {
                    if (view instanceof ImageView && data instanceof Drawable) {
                        ImageView iv = (ImageView) view;
                        iv.setImageDrawable((Drawable) data);
                        return true;
                    } else
                        return false;
                }
            });
    
        }
    
        protected Intent intentForPosition(int position) {
                Intent intent = this.getPackageManager().getLaunchIntentForPackage(
                        classes.get(position));
                return intent;
        }
    
    }
    View Code

    由于LancherActivity已经内置了list,因此直接实现getTargetIntent就可以了

    MainActivity

    public class MainActivity extends LauncherActivity {
    
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
        }
    
         protected Intent getTargetIntent() {
                // TODO Auto-generated method stub
                Intent intent=new Intent(Intent.ACTION_MAIN);
                intent.addCategory("android.intent.category.LAUNCHER");
    
                return intent;
        }
    
    }
  • 相关阅读:
    VS2010安装笔记
    Blend4中文版中截取图片的方法
    改变窗口的位置 (转载)
    窗口的位置
    windows消息大全
    WM_MOUSELEAVE和WM_MOUSEHOVER使用
    setwindowpos
    无注册表的COM调用
    WM_CLOSE WM_QUIT WM_DESTROY 三者的区别
    WM_MOUSEWHEEL消息
  • 原文地址:https://www.cnblogs.com/weijj/p/4137291.html
Copyright © 2011-2022 走看看