package com.softwinner.launcher.ui; import com.softwinner.launcher.Launcher; import com.softwinner.launcher.R; import com.softwinner.launcher.Utilities; import android.content.Context; import android.content.Intent; import android.graphics.Color; import android.graphics.Rect; import android.util.AttributeSet; import android.util.Log; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import java.util.ArrayList; public class QuicklyStartupBar extends RelativeLayout implements View.OnClickListener{ private final String TAG = "Launcher.QuicklyStartupBar"; private final int ITEM_NUM = 5; private Launcher mLauncher; private WorkSpace mMainLayout; private int [] up_image_unselected_list = { R.drawable.up1, R.drawable.up2, R.drawable.up3, R.drawable.up4, R.drawable.up5, }; private int [] up_image_selected_list = { R.drawable.sup1, R.drawable.sup2, R.drawable.sup3, R.drawable.sup4, R.drawable.sup5, }; private int [] mid_image_selected_list = { R.drawable.m1, R.drawable.m2, R.drawable.m3, R.drawable.m4, R.drawable.m5, }; private int [] down_image_unselected_list = { R.drawable.down1, R.drawable.down2, R.drawable.down3, R.drawable.down4, R.drawable.down5, }; private int [] down_image_selected_list = { R.drawable.sdown1, R.drawable.sdown2, R.drawable.sdown3, R.drawable.sdown4, R.drawable.sdown5, }; private int [] startupbar_text = { R.string.startup_bar_title_1, R.string.startup_bar_title_2, R.string.startup_bar_title_4, R.string.startup_bar_title_3, R.string.startup_bar_title_5 }; private int [] text_selected_color = { 0xffc0e259, 0xffb08047, 0xffef86d7, 0xff6ae4d0, 0xfff19600 }; private int mSelectedPosition = Integer.MAX_VALUE/2-1; private LinearLayout mUp; private ArrayList<ImageView> mUpImage; private RelativeLayout mMiddle; private LinearLayout mDown; private ArrayList<ImageView> mDownImage; private LinearLayout mTitle; private ArrayList<TextView> mText; private LayoutInflater mInflater; private View.OnClickListener mClick[] = { new OnClickListener(){ @Override public void onClick(View arg0) { mSelectedPosition = Integer.MAX_VALUE/2-3; setImage(mUpImage, up_image_selected_list,up_image_unselected_list); setImage(mDownImage, down_image_selected_list,down_image_unselected_list); setViewForMiddle(); setTitle(mText,startupbar_text); onKeyDown(KeyEvent.KEYCODE_DPAD_CENTER, new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_DPAD_CENTER)); }}, new OnClickListener(){ @Override public void onClick(View arg0) { mSelectedPosition = Integer.MAX_VALUE/2-2; setImage(mUpImage, up_image_selected_list,up_image_unselected_list); setImage(mDownImage, down_image_selected_list,down_image_unselected_list); setViewForMiddle(); setTitle(mText,startupbar_text); onKeyDown(KeyEvent.KEYCODE_DPAD_CENTER, new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_DPAD_CENTER)); }}, new OnClickListener(){ @Override public void onClick(View arg0) { mSelectedPosition = Integer.MAX_VALUE/2-1; setImage(mUpImage, up_image_selected_list,up_image_unselected_list); setImage(mDownImage, down_image_selected_list,down_image_unselected_list); setViewForMiddle(); setTitle(mText,startupbar_text); onKeyDown(KeyEvent.KEYCODE_DPAD_CENTER, new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_DPAD_CENTER)); }}, new OnClickListener(){ @Override public void onClick(View arg0) { mSelectedPosition = Integer.MAX_VALUE/2; setImage(mUpImage, up_image_selected_list,up_image_unselected_list); setImage(mDownImage, down_image_selected_list,down_image_unselected_list); setViewForMiddle(); setTitle(mText,startupbar_text); onKeyDown(KeyEvent.KEYCODE_DPAD_CENTER, new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_DPAD_CENTER)); }}, new OnClickListener(){ @Override public void onClick(View arg0) { mSelectedPosition = Integer.MAX_VALUE/2 + 1; setImage(mUpImage, up_image_selected_list,up_image_unselected_list); setImage(mDownImage, down_image_selected_list,down_image_unselected_list); setViewForMiddle(); setTitle(mText,startupbar_text); onKeyDown(KeyEvent.KEYCODE_DPAD_CENTER, new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_DPAD_CENTER)); } }}; public QuicklyStartupBar(Context context, AttributeSet attrs) { super(context, attrs); mInflater = LayoutInflater.from(context); } @Override protected void onFinishInflate() { super.onFinishInflate(); mUp = (LinearLayout)findViewById(R.id.quickly_start_bar_up); mMiddle = (RelativeLayout)findViewById(R.id.quickly_start_bar_middle); mDown = (LinearLayout)findViewById(R.id.quickly_start_bar_down); mTitle = (LinearLayout)findViewById(R.id.quickly_start_bar_title); addViewForUp(getContext() , null); addViewForDown(getContext(), null); setViewForMiddle(); addTitle(); setOnClickListener(this); invalidate(); } private void addViewForUp(Context context, AttributeSet attrs){ mUpImage = new ArrayList<ImageView>(ITEM_NUM); ImageView v; for(int i=0;i<ITEM_NUM;i++){ v = (ImageView) mUp.getChildAt(i); v.setOnClickListener(mClick[i]); mUpImage.add(v); } setImage(mUpImage, up_image_selected_list,up_image_unselected_list); } private void setViewForMiddle(){ ImageView v = (ImageView) mMiddle.findViewById(R.id.long_bar); v.setImageResource(mid_image_selected_list[mSelectedPosition%mid_image_selected_list.length]); int t = v.getTop(); int height = v.getHeight(); int l = mSelectedPosition%ITEM_NUM*240; int width = v.getWidth(); RelativeLayout.LayoutParams lp = (LayoutParams) v.getLayoutParams(); lp.leftMargin = mSelectedPosition%ITEM_NUM*240; v.setLayoutParams(lp); } private void setTitle(ArrayList<TextView> text,int [] id){ LinearLayout.LayoutParams lp; for(int i=0;i<ITEM_NUM;i++){ text.get(i).setText(id[i]); text.get(i).setTextSize(getResources().getDimensionPixelSize(R.dimen.quickly_start_bar_title_normal)); lp = (android.widget.LinearLayout.LayoutParams) text.get(i).getLayoutParams(); lp.width = getResources().getDimensionPixelSize(R.dimen.quickly_start_bar_title_normal_width); text.get(i).setLayoutParams(lp); text.get(i).setTextColor(Color.WHITE); if(i==mSelectedPosition%ITEM_NUM){ text.get(i).setTextColor(text_selected_color[mSelectedPosition%text_selected_color.length]); text.get(i).setTextSize(getResources().getDimensionPixelSize(R.dimen.quickly_start_bar_title_sel)); lp = (android.widget.LinearLayout.LayoutParams) text.get(i).getLayoutParams(); lp.width = getResources().getDimensionPixelSize(R.dimen.quickly_start_bar_title_sel_width); text.get(i).setLayoutParams(lp); } } } private void addViewForDown(Context context, AttributeSet attrs){ mDownImage = new ArrayList<ImageView>(ITEM_NUM); ImageView v; for(int i=0;i<ITEM_NUM;i++){ v = (ImageView)mDown.getChildAt(i); v.setOnClickListener(mClick[i]); mDownImage.add(v); } setImage(mDownImage, down_image_selected_list,down_image_unselected_list); } private void addTitle(){ mText = new ArrayList<TextView>(ITEM_NUM); TextView v; for(int i=0;i<ITEM_NUM;i++){ v = (TextView)mTitle.getChildAt(i); v.setTextColor(Color.WHITE); v.setShadowLayer(1, 1, 1, Color.BLACK); v.setOnClickListener(mClick[i]); mText.add(v); } setTitle(mText,startupbar_text); } private void setImage(ArrayList<ImageView> list,int [] sel,int [] unsel){ for(int i=0;i<ITEM_NUM;i++){ if(i==mSelectedPosition%ITEM_NUM){ list.get(i).setImageResource(sel[i]); }else{ list.get(i).setImageResource(unsel[i%unsel.length]); } } } /** * ---------------------------------------------------------------- * public method * setPosition:set the current selected position. * moveToLeft:move quickly start bar to left. * moveToRight:move quickly start bar to right. */ /** * set the current selected position and flush the view. * @param position the position you want to set ,range 0 ~ Integer.MAX_VALUE */ public void setPosition(int position){ mSelectedPosition = position; setImage(mUpImage, up_image_selected_list,up_image_unselected_list); setImage(mDownImage, down_image_selected_list,down_image_unselected_list); setViewForMiddle(); } /** * move quickly start bar to left. */ public void moveToLeft(){ mSelectedPosition--; setImage(mUpImage, up_image_selected_list,up_image_unselected_list); setImage(mDownImage, down_image_selected_list,down_image_unselected_list); setViewForMiddle(); setTitle(mText,startupbar_text); } /** * move quickly start bar to right. */ public void moveToRight(){ mSelectedPosition++; setImage(mUpImage, up_image_selected_list,up_image_unselected_list); setImage(mDownImage, down_image_selected_list,down_image_unselected_list); setViewForMiddle(); setTitle(mText,startupbar_text); } /** * Set the launcher, launcher can provide part of the functions. * @param launcher the launcher */ public void setMainLayout(WorkSpace mainLayout){ mMainLayout = mainLayout; } @Override protected void onFocusChanged(boolean gainFocus, int direction, Rect previouslyFocusedRect) { if(gainFocus){ mText.get(mSelectedPosition%ITEM_NUM).setTextColor(text_selected_color[mSelectedPosition%text_selected_color.length]); }else{ mText.get(mSelectedPosition%ITEM_NUM).setTextColor(Color.WHITE); } } /** * --------------------------------------------------------- * */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_DPAD_LEFT){ moveToLeft(); }else if(keyCode == KeyEvent.KEYCODE_DPAD_RIGHT){ moveToRight(); }else if(keyCode == KeyEvent.KEYCODE_DPAD_CENTER){ Intent intent; switch(mSelectedPosition%Utilities.ACTION_COUNT){ case Utilities.ACTION_START_ALL_APP_VIEW: mMainLayout.showAllApps(true); break; case Utilities.ACTION_START_FILEMANAGER: intent = new Intent(); intent.setClassName(Utilities.FILEMANAGER_PACKAGE,Utilities.FILEMANAGER_NAME); intent.putExtra("media_type", Utilities.FILEMANAGER_TYPE_ALL); mMainLayout.mLauncher.startActivitySafely(intent,TAG); break; case Utilities.ACTION_START_WEBBROWSER: intent = new Intent(); intent.setClassName("com.android.browser", "com.android.browser.BrowserActivity"); mMainLayout.mLauncher.startActivitySafely(intent,TAG); break; case Utilities.ACTION_START_FAVORITES_APPS: mMainLayout.showFavoritesApps(true); break; case Utilities.ACTION_START_SETTINGS: intent = new Intent(); intent.setClassName("com.android.settings", "com.android.settings.Settings"); mMainLayout.mLauncher.startActivitySafely(intent,TAG); break; } } return super.onKeyDown(keyCode, event); } public void reflashLocal(){ setTitle(mText,startupbar_text); } @Override public void onClick(View v) { mText.get(mSelectedPosition%ITEM_NUM).setTextColor(text_selected_color[mSelectedPosition%text_selected_color.length]); } }