自定义下拉菜单模式是什么呢?

5个月前 (10-16 00:10)阅读3回复0
lrj
lrj
  • 管理员
  • 注册排名2
  • 经验值133040
  • 级别管理员
  • 主题26608
  • 回复0
楼主

  规范申明

Spinner就是下拉菜单,也等于swing的combo box、html的,因为手机画面有限,要在有限的范畴选择项目,下拉菜单是唯

一、也是较好的选择。

Android 供给的Spinner Widget的下拉菜单已经十分好用了,款式也还适用。

  但本规范的示范重点在于自定义下拉菜单里的款式,其关键在于挪用 setDropDownViewResource办法,以XML的体例定义下拉菜单要显示的容貌。本规范除了自定义下拉菜单,还用法式设想了一段动画,当 User以触控的体例单击那个自定义的Spinner时,会以一段动画提醒User。

在new ArrayAdapter中,我们将会利用ArrayAdapter(Context context, int textViewResourceId, T[] objects)那个Constructor,textViewResourceId利用Android供给的ResourceID,objects为必需传递的字符串数组(String Array)。

规范法式

Adapter的setDropDownViewResource能够设置下拉菜单的显示体例,将该xml定义在res/layout目次下面,可针对下拉菜单中的TextView停止设置,好像本法式里的R。layout。myspinner_ dropdown即为自定义的下拉菜单TextView款式。

  除了改动下拉菜单款式外,也对Spinner做了一点动态效果,单击Spinner时,晃动 Spinner再呈现下拉菜单(myAnimation)。

/* import法式略 */ public class EX04_08 extends Activity{

private static final String[] countriesStr =

{ "北京市", "上海市", "天津市", "重庆市" };

private TextView myTextView;

private Spinner mySpinner;

private ArrayAdapter adapter;

Animation myAnimation;

/** Called when the activity is first created。

@Override

public void onCreate(Bundle savedInstanceState)

super。onCreate(savedInstanceState);

/*加载main。xml Layout */

setContentView(R。

  layout。main);

/* 以findViewById()获得对象 */

myTextView = (TextView) findViewById(R。id。myTextView);

mySpinner = (Spinner) findViewById(R。

  id。mySpinner);

adapter = new ArrayAdapter(this,

android。R。layout。simple_spinner_item, countriesStr);

/* myspinner_dropdown为自定义下拉菜单款式定义在res/layout目次下 */

adapter。

  setDropDownViewResource(R。layout。myspinner_dropdown);

/* 将ArrayAdapter添加Spinner对象中 */

mySpinner。setAdapter(adapter);

/* 将mySpinner添加OnItemSelectedListener */

mySpinner。

  setOnItemSelectedListener

(new Spinner。OnItemSelectedListener()

@Override

public void onItemSelected

(AdapterView arg0, View arg1, int arg2,

long arg3)

/* 将所选mySpinner的值带入myTextView中 */

myTextView。

  setText("选择的是" + countriesStr[arg2]);

/* 将mySpinner显示 */

arg0。setVisibility(View。VISIBLE);

@Override

public void onNothingSelected(AdapterView arg0)

// TODO Auto-generated method stub

/* 获得Animation定义在res/anim目次下 */

myAnimation = AnimationUtils。

  loadAnimation(this, R。anim。my_anim);

/* 将mySpinner添加OnTouchListener */

mySpinner。setOnTouchListener(new Spinner。OnTouchListener()

@Override

public boolean onTouch(View v, MotionEvent event)

/* 将mySpinner运行Animation */

v。

  startAnimation(myAnimation);

/* 将mySpinner隐藏 */

v。setVisibility(View。INVISIBLE);

return false;

mySpinner。setOnFocusChangeListener(new Spinner。

  OnFocusChangeListener()

@Override

public void onFocusChange(View v, boolean hasFocus)

// TODO Auto-generated method stub

res/layout/myspinner_dropdown。

  xml

改动下拉菜单样子的XML,里面所利用的组件为TextView。

res/anim/my_anim。xml

Android的动画(Animation)是由4品种型(Type)所构成:alpha、scale、translate以及rotate,以下的自定义动画将利用此中的两种。

扩展进修

Animation次要有两种动态体例,一种是tweened animation(渐变更画),另一种是frame by frame animation(画面转换动画)。tweened animation则有以下4种根本转换体例。

· AlphaAnimation (transparency changes):通明度转换。

· RotateAnimation (rotations):扭转转换。

· ScaleAnimation (growing or shrinking):缩放转换。

· TranslateAnimation (position changes):位置转换。

定义好你想要的动画XML后,用AnimationUtils。loadAnimation将动画加载,并试图在想要加上动态效果的组件中利用startAnimation办法。

0
回帖

自定义下拉菜单模式是什么呢? 期待您的回复!

取消