Android2.2 Luncher2扩展(仿Ipad DockBar、HTC预览图、批量添加快捷方式、启用3D效果等)

Android2.2 Luncher2扩展(仿Ipad DockBar、HTC预览图、批量添加快捷方式、启用3D效果等),第1张

概述1、给Launcher添加DockBar 2、修改Launcher长安AllApps的预览图 (1、2两点请参考何明桂何兄的博客,地址分别为:http://blog.csdn.net/hmg25/article/details/6289438  http://blog.csdn.net/hmg25/article/details/6289725)DockBar的实现,何兄只提供了竖屏,我在其博客的 1、给Launcher添加Dockbar 2、修改Launcher长安AllApps的预览图

(1、2两点请参考何明桂何兄的博客,地址分别为:http://blog.csdn.net/hmg25/article/details/6289438  http://blog.csdn.net/hmg25/article/details/6289725)Dockbar的实现,何兄只提供了竖屏,我在其博客的评论中看到不少人说是要实现横屏,下面我将我的实现帖出来。主要是修改layout-land/launcher.xml文件,以下是这个文件的全部代码:

view plain print ? <span style="Font-size:18px;"><com.androID.launcherex.DragLayer       xmlns:androID="http://schemas.androID.com/apk/res/androID"       xmlns:launcher="http://schemas.androID.com/apk/res/com.androID.launcher"          androID:ID="@+ID/drag_layer"       androID:layout_wIDth="match_parent"       androID:layout_height="match_parent">          <include layout="@layout/all_apps" />          <!-- The workspace contains 3 screens of cells -->       <com.androID.launcherex.Workspace           androID:ID="@+ID/workspace"           androID:layout_wIDth="match_parent"           androID:layout_height="match_parent"           androID:scrollbars="horizontal"           androID:fadeScrollbars="true"           launcher:defaultScreen="2">              <include androID:ID="@+ID/cell1" layout="@layout/workspace_screen" />           <include androID:ID="@+ID/cell2" layout="@layout/workspace_screen" />           <include androID:ID="@+ID/cell3" layout="@layout/workspace_screen" />           <include androID:ID="@+ID/cell4" layout="@layout/workspace_screen" />           <include androID:ID="@+ID/cell5" layout="@layout/workspace_screen" />          </com.androID.launcherex.Workspace>             <relativeLayout            androID:ID="@+ID/dock_layout"           androID:layout_gravity="bottom|left"           androID:layout_wIDth="match_parent"           androID:layout_height="95dip"           >           <com.androID.launcherex.ClippedImageVIEw               androID:ID="@+ID/prevIoUs_screen"               androID:layout_wIDth="93dip"               androID:layout_height="@dimen/button_bar_height"               androID:layout_alignParenttop="true"               androID:layout_alignParentleft="true"               androID:layout_marginleft="6dip"               androID:scaleType="center"               androID:src="@drawable/home_arrows_left"               androID:onClick="prevIoUsScreen"               launcher:ignoreZone="56dip"               androID:focusable="true"               androID:clickable="true" />                  <com.androID.launcherex.ClippedImageVIEw               androID:ID="@+ID/next_screen"               androID:layout_wIDth="93dip"               androID:layout_height="@dimen/button_bar_height"               androID:layout_alignParenttop="true"               androID:layout_alignParentRight="true"               androID:layout_marginRight="6dip"               androID:scaleType="center"               androID:src="@drawable/home_arrows_right"               androID:onClick="nextScreen"               launcher:ignoreZone="-56dip"               androID:focusable="true"               androID:clickable="true" />                  <com.androID.launcherex.DeleteZone               androID:ID="@+ID/delete_zone"               androID:layout_wIDth="@dimen/delete_zone_size"               androID:layout_height="@dimen/delete_zone_size"               androID:paddingleft="@dimen/delete_zone_padding"               androID:layout_marginBottom="@dimen/dock_bar_height"               androID:layout_alignParentBottom="true"               androID:layout_centerHorizontal="true"                      androID:scaleType="center"               androID:src="@drawable/delete_zone_selector"               androID:visibility="invisible"               launcher:direction="vertical"               />                  <relativeLayout               androID:ID="@+ID/all_apps_button_cluster"               androID:layout_height="fill_parent"               androID:layout_wIDth="@dimen/button_bar_height_portrait"               androID:layout_gravity="bottom|center_vertical"               androID:layout_marginBottom="@dimen/half_status_bar_height"               >                     <!-- <com.androID.launcherex.HandleVIEw                   style="@style/Hotseatbutton"                   androID:ID="@+ID/all_apps_button"                   androID:layout_centerVertical="true"                   androID:layout_alignParentRight="true"                          androID:src="@drawable/all_apps_button"                   launcher:direction="vertical"                   />-->       <!-- androID:layout_below="@ID/all_apps_button" -->       <!--  androID:layout_above="@ID/all_apps_button" -->               <ImageVIEw                   androID:ID="@+ID/hotseat_left"                   style="@style/Hotseatbutton.left"                          androID:src="@drawable/hotseat_phone"                   androID:visibility="gone"                   androID:onClick="launchHotSeat"                   />                      <ImageVIEw                   androID:ID="@+ID/hotseat_right"                   style="@style/Hotseatbutton.Right"                  androID:visibility="gone"                   androID:src="@drawable/hotseat_browser"                   androID:onClick="launchHotSeat"                   />           </relativeLayout>           <com.androID.launcherex.Dockbar               androID:ID="@+ID/dockbar"                androID:layout_wIDth="fill_parent"               androID:layout_height="@dimen/button_bar_height"               androID:background="@drawable/dock_bg"               androID:layout_alignParentBottom="true"               launcher:direction="horizontal">                              <horizontalscrollview                    androID:ID="@+ID/dock_scroll_vIEw"                   androID:scrollbars="none"                   androID:fadingEdge="none"                   androID:saveEnabled="false"                    androID:layout_wIDth="fill_parent"                   androID:layout_height="fill_parent">                   <linearLayout                        androID:orIEntation="horizontal"                       androID:ID="@+ID/dock_item_holder"                        androID:saveEnabled="false"                       androID:layout_wIDth="fill_parent"                        androID:layout_height="fill_parent">                       <com.androID.launcherex.HandleVIEw                           androID:ID="@+ID/all_apps_button"                            androID:layout_centerVertical="true"                           androID:src="@drawable/all_apps_button"                            launcher:direction="horizontal"                           androID:layout_wIDth="fill_parent"                            androID:layout_height="fill_parent"                           androID:focusable="true"                            androID:clickable="true" />                   </linearLayout>               </horizontalscrollview>           </com.androID.launcherex.Dockbar>       </relativeLayout>   </com.androID.launcherex.DragLayer>   </span>  
3、启用3D效果

3D效果启动很简单,只需要将all_apps.xml文件下的

<include layout="@layout/all_apps_2d" />改为:

<include layout="@layout/all_apps_3d" />

即可。当然你可能还需要对图标做一些调整。我主要是调整了一下几个参数:

view plain print ? <span style="Font-size:18px;">        public static final int ICON_WIDTH_PX = 64;           public static final int ICON_TEXTURE_WIDTH_PX = 74;           public static final int SELECTION_TEXTURE_WIDTH_PX = 74 + 20;              public static final int ICON_HEIGHT_PX = 64;           public static final int ICON_TEXTURE_HEIGHT_PX = 74;           public static final int SELECTION_TEXTURE_HEIGHT_PX = 74 + 20;</span>  
4、替换应用程序图标 主要是在IconCache中做了以下修改。修改的只是Launcher上显示的图标,长按Home键显示最近开启的应用时,图标还是原先默认的图标,这些就自己去改吧。
view plain print ? <span style="Font-size:18px;">private CacheEntry cacheLocked(Componentname componentname, ResolveInfo info) {           CacheEntry entry = mCache.get(componentname);           if (entry == null) {               entry = new CacheEntry();               mCache.put(componentname, entry);               entry.Title = info.loadLabel(mPackageManager).toString();               if (entry.Title == null) {                   entry.Title = info.activityInfo.name;               }              // entry.icon = UtilitIEs.createIconBitmap(info.activityInfo.loadIcon(mPackageManager), mContext);                              entry.icon = suBIcon(info);           }           return entry;       }              /**       * Replace the default Launcher icon       * @param info       * @return       */       private Bitmap suBIcon(ResolveInfo info){           Drawable drawable = null;           String pname = info.activityInfo.packagename;                      if(pname.equals(Constant.PACKAGE_VIDEOPLAYER)){               drawable = mResources.getDrawable(R.drawable.lu_vIDeoplayer);           }else if(pname.equals(Constant.PACKAGEname_broWSER)){               drawable = mResources.getDrawable(R.drawable.lu_browser);           }else if(pname.equals(Constant.PACKAGE_CALculaTOR)){               drawable = mResources.getDrawable(R.drawable.lu_calculator2);           }else if(pname.equals(Constant.PACKAGE_CALENDAR)){               drawable = mResources.getDrawable(R.drawable.lu_calendar);           }else if(pname.equals(Constant.PACKAGE_CAMERA)){               drawable = mResources.getDrawable(R.drawable.lu_camera);           }else if(pname.equals(Constant.PACKAGE_CLOCK)){               drawable = mResources.getDrawable(R.drawable.lu_alarmclock);           }else if(pname.equals(Constant.PACKAGE_EMAIL)){               drawable = mResources.getDrawable(R.drawable.lu_email);           }else if(pname.equals(Constant.PACKAGE_galLERY)){               drawable = mResources.getDrawable(R.drawable.lu_gallery);           }else if(pname.equals(Constant.PACKAGE_MUSIC)){               drawable = mResources.getDrawable(R.drawable.lu_music);           }else if(pname.equals(Constant.PACKAGE_SETTINGS)){               drawable = mResources.getDrawable(R.drawable.lu_settings);           }                      if(drawable!=null){               return UtilitIEs.createIconBitmap(drawable, mContext);           }else{               return UtilitIEs.createIconBitmap(info.activityInfo.loadIcon(mPackageManager), mContext);           }       }</span>  
5、批量添加快捷方式 *** 作:长按桌面 -- Add to Home Screen点击Applications即显示所有安装应用程序列表。可任意选择多个应用程序的快捷方式添加到Launcher上。
1、Activity类:AddShortcutsActivity 主要用于显示安装应用程序信息和添加 *** 作界面
2、列表适配: AddShortcutsAdapter 继承BaseAdapter。
3、快捷方式实体类:ShortcutsEntity
4、add_shortcuts_adapter.xml
5、add_shortcuts.xml

直接上代码:

view plain print ? <span style="Font-size:18px;">package com.androID.launcherex;      import java.util.ArrayList;   import java.util.List;      import androID.app.Activity;   import androID.content.Intent;   import androID.content.pm.ActivityInfo;   import androID.content.pm.PackageManager;   import androID.content.pm.ResolveInfo;   import androID.os.Bundle;   import androID.os.Parcelable;   import androID.util.Log;   import androID.vIEw.VIEw;   import androID.vIEw.VIEw.OnClickListener;   import androID.Widget.AdapterVIEw;   import androID.Widget.AdapterVIEw.OnItemClickListener;   import androID.Widget.button;   import androID.Widget.ListVIEw;      import com.androID.launcher.R;      public class AddShortcutsActivity extends Activity implements OnClickListener,OnItemClickListener{          private AddShortcutsAdapter mShortcutsAdapter;              private final static String TAG = "AddShortcutsActivity";              private ListVIEw lstShortcuts;       private button btnAddShortcuts;       private button btnCancelShortcuts;              private ArrayList<ShortcutsEntity> mShortcutsEntity = new ArrayList<ShortcutsEntity>();              @OverrIDe       protected voID onCreate(Bundle savedInstanceState) {           super.onCreate(savedInstanceState);           setContentVIEw(R.layout.add_shortcuts);                      setupVIEws();       }              private voID setupVIEws(){           lstShortcuts = (ListVIEw) findVIEwByID(R.ID.shortcuts_List);   //      lstShortcuts.setItemsCanFocus(false);           lstShortcuts.setChoiceMode(ListVIEw.CHOICE_MODE_SINGLE);                       btnAddShortcuts = (button) findVIEwByID(R.ID.shortcuts_add);           btnCancelShortcuts=(button) findVIEwByID(R.ID.shortcuts_cancel);                      btnAddShortcuts.setonClickListener(this);           btnCancelShortcuts.setonClickListener(this);           lstShortcuts.setonItemClickListener(this);                      mShortcutsEntity = getAllShortcuts();                      mShortcutsAdapter = new AddShortcutsAdapter(mShortcutsEntity,this);           lstShortcuts.setAdapter(mShortcutsAdapter);                  }          public voID onClick(VIEw arg0) {           switch(arg0.getID()){           case R.ID.shortcuts_add:                              ArrayList<Intent> intents = getSelectedShortcuts();               Intent intent = getIntent();               // Read base intent from extras, otherwise assume default               Parcelable parcel = intent.getParcelableExtra(Intent.EXTRA_INTENT);                              if (parcel instanceof Intent) {                   intent = (Intent) parcel;               } else {                   intent = new Intent(Intent.ACTION_MAIN, null);                   intent.addcategory(Intent.category_DEFAulT);               }                              Bundle bundle = new Bundle();               bundle.putSerializable("intents", intents);               intent.putExtras(bundle);                              setResult(Activity.RESulT_OK,intent);                                             finish();                              break;           case R.ID.shortcuts_cancel:               finish();               break;           }       }              /**       * Get all the applications       * @return       */       private ArrayList<ShortcutsEntity> getAllShortcuts(){                      ArrayList<ShortcutsEntity> entitys = new ArrayList<ShortcutsEntity>();                      Intent intent = new Intent(Intent.ACTION_MAIN);           intent.addcategory(Intent.category_LAUNCHER);                      PackageManager mPackageManager = this.getPackageManager();           List<ResolveInfo> mAllApps = mPackageManager.queryIntentActivitIEs(intent, 0);                      int size = mAllApps.size();                      for(int i=0;i<size;i++){                              ShortcutsEntity entity = new ShortcutsEntity();               ResolveInfo resolveInfo = mAllApps.get(i);               entity.Title = resolveInfo.loadLabel(mPackageManager);               entity.Icon = resolveInfo.loadIcon(mPackageManager);               entity.Info = resolveInfo;               entitys.add(entity);                              Log.i(TAG, "entity.title="+resolveInfo.loadLabel(mPackageManager));           }                      //Todo: sort                      return entitys;       }          public voID onItemClick(AdapterVIEw<?> arg0, VIEw arg1, int arg2, long arg3) {           mShortcutsAdapter.setSelectItem(arg2);           mShortcutsAdapter.notifyDataSetChanged();       }              /**       * Been selected shortcuts       * @return       */       private ArrayList<Intent> getSelectedShortcuts(){                      ArrayList<Intent> selecteds = new ArrayList<Intent>();                      ArrayList<Boolean> isCheck = AddShortcutsAdapter.isChecked;           int checkSize =  isCheck.size();           for(int i=0;i<checkSize;i++){               if(isCheck.get(i)){                   ShortcutsEntity entity = mShortcutsEntity.get(i);                   ActivityInfo activityInfo = entity.Info.activityInfo;                   Intent intent = new Intent();                   intent.setClassname(activityInfo.applicationInfo.packagename,activityInfo.name);                   selecteds.add(intent);                   Log.i(TAG, "selected item.name="+mShortcutsEntity.get(i).Title);               }           }                      return selecteds;       }   }   </span>  
view plain print ? <span style="Font-size:18px;">package com.androID.launcherex;      import java.util.ArrayList;      import com.androID.launcher.R;      import androID.content.Context;   import androID.vIEw.LayoutInflater;   import androID.vIEw.VIEw;   import androID.vIEw.VIEwGroup;   import androID.Widget.BaseAdapter;   import androID.Widget.CheckBox;   import androID.Widget.ImageVIEw;   import androID.Widget.TextVIEw;      public class AddShortcutsAdapter extends BaseAdapter {          private ArrayList<ShortcutsEntity> mShortcuts;       private final LayoutInflater mInflater;       private Context mContext;       public static ArrayList<Boolean> isChecked;              public AddShortcutsAdapter(ArrayList<ShortcutsEntity> shortcuts,Context context)       {           mShortcuts = shortcuts;           mContext = context;           mInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);                      isChecked = new ArrayList<Boolean>();                      int size = mShortcuts.size();           for(int i=0;i<size;i++){               isChecked.add(false);           }       }              public int getCount() {           if(mShortcuts!=null){               return mShortcuts.size();           }           return 0;       }          public Object getItem(int arg0) {           if(mShortcuts!=null){               return mShortcuts.get(arg0);           }           return null;       }          public long getItemID(int arg0) {           return 0;       }          public VIEw getVIEw(int position, VIEw convertVIEw, VIEwGroup parent) {                      VIEwHolder holder = null;           ShortcutsEntity entity = mShortcuts.get(position);                      if(convertVIEw==null){               holder = new VIEwHolder();               convertVIEw = mInflater.inflate(R.layout.add_shortcuts_adapter, parent, false);                              holder.imageVIEw = (ImageVIEw) convertVIEw.findVIEwByID(R.ID.sc_icon);               holder.textVIEw = (TextVIEw) convertVIEw.findVIEwByID(R.ID.sc_Title);               holder.checkBox = (CheckBox) convertVIEw.findVIEwByID(R.ID.sc_checkBox);                              convertVIEw.setTag(holder);           }else{               holder = (VIEwHolder) convertVIEw.getTag();           }                      if(entity!=null){               holder.textVIEw.setText(entity.Title);               //Todo: Modify the picture size.               holder.imageVIEw.setBackgroundDrawable(UtilitIEs.getDrawable(entity.Icon));           }                      if(isChecked!=null && !isChecked.isEmpty()){               holder.checkBox.setChecked(isChecked.get(position));           }                      return convertVIEw;       }              public voID setSelectItem(int item){           if(isChecked.get(item)){               isChecked.set(item, false);           }else{               isChecked.set(item,true);           }       }              private class VIEwHolder{           ImageVIEw imageVIEw;           TextVIEw textVIEw;           CheckBox checkBox;       }   }   </span>  
view plain print ? <span style="Font-size:18px;">package com.androID.launcherex;      import androID.content.pm.ResolveInfo;   import androID.graphics.drawable.Drawable;      public class ShortcutsEntity {          public CharSequence Title;       public Drawable Icon;       public ResolveInfo Info;   }   </span>  
view plain print ? <span style="Font-size:18px;"><?xml version="1.0" enCoding="utf-8"?>   <relativeLayout     xmlns:androID="http://schemas.androID.com/apk/res/androID"     androID:orIEntation="vertical"     androID:layout_wIDth="match_parent"     androID:layout_height="match_parent">       <ImageVIEw            androID:ID="@+ID/sc_icon"           androID:layout_wIDth="wrap_content"           androID:layout_height="wrap_content"           androID:layout_alignParenttop="true"           androID:layout_alignParentleft="true"           androID:layout_marginleft="6dip"/>       <TextVIEw            androID:ID="@+ID/sc_Title"           androID:layout_wIDth="wrap_content"           androID:layout_height="wrap_content"           androID:layout_alignParenttop="true"           androID:layout_toRightOf="@+ID/sc_icon"           androID:layout_marginleft="4dip"/>       <CheckBox           androID:ID="@+ID/sc_checkBox"           androID:layout_wIDth="wrap_content"           androID:layout_height="wrap_content"           androID:layout_alignParenttop="true"           androID:layout_alignParentRight="true"           androID:focusable="false"           androID:layout_marginRight="6dip"/>   </relativeLayout>   </span>  
view plain print ? <span style="Font-size:18px;"><?xml version="1.0" enCoding="utf-8"?>   <relativeLayout     xmlns:androID="http://schemas.androID.com/apk/res/androID"     androID:orIEntation="vertical"     androID:layout_wIDth="match_parent"     androID:layout_height="match_parent">              <ListVIEw            androID:ID="@+ID/shortcuts_List"           androID:layout_wIDth="match_parent"           androID:layout_height="wrap_content"           androID:layout_alignParentleft="true"           androID:layout_alignParenttop="true"           androID:layout_above="@+ID/shortcuts_layout"           />       <linearLayout            androID:ID="@+ID/shortcuts_layout"           androID:layout_wIDth="match_parent"           androID:layout_height="wrap_content"           androID:orIEntation="horizontal"           androID:layout_alignParentleft="true"           androID:layout_alignParentBottom="true"           >           <button                androID:ID="@+ID/shortcuts_add"               androID:layout_wIDth="wrap_content"               androID:layout_height="wrap_content"               androID:layout_weight="1"               androID:text="@string/shortcuts_add_text"/>                          <button                androID:ID="@+ID/shortcuts_cancel"               androID:layout_wIDth="wrap_content"               androID:layout_height="wrap_content"               androID:layout_weight="1"               androID:text="@string/shortcuts_cancel_text"               />       </linearLayout>   </relativeLayout>   </span>  
最后在Launcher.java的onActivityResult方法中添加如下代码,即大功告成
view plain print ? <span style="Font-size:18px;">Bundle bundle = data.getExtras();                       ArrayList<Intent> intents = (ArrayList<Intent>) bundle.getSerializable("intents");                                              if (intents != null && !intents.isEmpty()) {                           int size = intents.size();                           for (int i = 0; i < size; i++) {                               mAddItemCellinfo = new CellLayout.Cellinfo(); // Shortcut to solve the problem of overlapPing                               completeAddApplication(this, intents.get(i),mAddItemCellinfo);                           }                       }                       break;</span>   总结

以上是内存溢出为你收集整理的Android2.2 Luncher2扩展(仿Ipad DockBar、HTC预览图、批量添加快捷方式、启用3D效果等)全部内容,希望文章能够帮你解决Android2.2 Luncher2扩展(仿Ipad DockBar、HTC预览图、批量添加快捷方式、启用3D效果等)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1093627.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存