android Launcher : hotseat 解析

一、hotseat基本信息
   Launcher2/res/xml-sw600dp/default_workspace.xml
           launcher:packageName="com.android.dialer"
        launcher:className="com.android.dialer.DialtactsActivity" //这里注意不要写成"com.android.dialer/.DialtactsActivity"
        launcher:container="-101"
        launcher:screen="1" //第1屏,0-4共5屏
        launcher:x="1"      //图标X位置
        launcher:y="0" />   //图标Y位置
   launcher:container="-101" 表示"hotseat"

二、Hotseat尺寸
    1、/Launcher2/res/values/config.xml
     
    true
    5
    2
   
    100

    /Launcher2/src/com/android/launcher2/CellLayout.java
      mHotseatScale = (res.getInteger(R.integer.hotseat_item_scale_percentage) / 100f);

    2、hotseat cell大小
    Launcher2/res/values/dimens.xml
      64dp
      64dp
     如果此二值不够大,会导致hotseat上的icon显示不完整。

    3、AllApp尺寸
         void resetLayout() {
        mContent.removeAllViewsInLayout();

        // Add the Apps button
        Context context = getContext();
        LayoutInflater inflater = LayoutInflater.from(context);
        BubbleTextView allAppsButton = (BubbleTextView)
                inflater.inflate(R.layout.application, mContent, false);
        allAppsButton.setCompoundDrawablesWithIntrinsicBounds(null,
                context.getResources().getDrawable(R.drawable.all_apps_button_icon), null, null);
        allAppsButton.setContentDescription(context.getString(R.string.all_apps_button_label));
        allAppsButton.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (mLauncher != null &&
                    (event.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_DOWN) {
                    mLauncher.onTouchDownAllAppsButton(v);
                }
                return false;
            }
        });

        allAppsButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(android.view.View v) {
                if (mLauncher != null) {
                    mLauncher.onClickAllAppsButton(v);
                }
            }
        });

        // Note: We do this to ensure that the hotseat is always laid out in the orientation of
        // the hotseat in order regardless of which orientation they were added
        int x = getCellXFromOrder(mAllAppsButtonRank);
        int y = getCellYFromOrder(mAllAppsButtonRank);
        CellLayout.LayoutParams lp = new CellLayout.LayoutParams(x,y,1,1);
        lp.canReorder = false;
        mContent.addViewToCellLayout(allAppsButton, -1, 0, lp, true);//Await
    }

转载于:https://my.oschina.net/u/2273845/blog/348941

你可能感兴趣的:(android Launcher : hotseat 解析)