按钮常用事件枚举
其实这些都是比较基本的,和点击事件之类的很像,学会一个其实就可以举一反三了,而且按钮是继承于TextView的。
布局的一些操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <Button android:id="@+id/Button02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@+id/button1" android:layout_marginLeft="24dp" android:layout_marginTop="42dp" android:layout_toRightOf="@+id/Button01" android:drawableLeft="@drawable/ic_launcher" android:drawablePadding="30dip" android:drawableTop="@drawable/ic_launcher" android:text="Button" />
|
这个drawableLeft
就是左边图片的资源,drawablePadding
这个是图片和文字的距离。
下面java代码用到的布局:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <Button android:id="@+id/Button01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/AtEdit1" android:layout_alignParentBottom="true" android:layout_marginBottom="168dp" android:text="Button" />
<Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/Button01" android:layout_alignRight="@+id/Button01" android:layout_marginBottom="37dp" android:background="@drawable/ic_launcher" android:text="Button" />
|
点击事件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| Tv_01 = (TextView) findViewById(R.id.Button01); Tv_01.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Button btn = (Button) v; if(value == 1 && btn.getWidth() >= 300) value = -1; else if(value == -1 && btn.getWidth() < 100) value = 1; btn.setWidth(btn.getWidth() + value*(int)(btn.getWidth()*0.1)); btn.setHeight(btn.getHeight() + value*(int)(btn.getHeight()*0.1)); } });
|
这个就是一个比较典型的点击事件,就是通过放大缩小来展示的,传进来的View就是事件源。
触摸事件
就是当你触摸到了就响应的一个事件,具体编写:
先要接口implements OnTouchListener
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| Tv_1.setOnTouchListener(this);
@Override public boolean onTouch(View v, MotionEvent event) { int action = event.getAction(); switch (action) { case MotionEvent.ACTION_DOWN: Tv_1.setBackgroundResource(R.drawable.ic_l1); break; case MotionEvent.ACTION_UP: Tv_1.setBackgroundResource(R.drawable.ic_launcher); break; default: break; } return false; }
|
这就是触摸换图
这里就是说通过event进行判断,是哪种动作,返回值的话呢就是是否继续传递下去,就和那个钩子链差不多。
焦点事件
OnFocusChangeListener
Tv_01.setOnFocusChangeListener(this);
1 2 3 4 5 6
| @Override public void onFocusChange(View v, boolean hasFocus) { if(hasFocus) Toast.makeText(this, "哟焦点了",Toast.LENGTH_SHORT); }
|
代码实现图文混排
既然Button是继承于TextView的,那么我们一样可以使用span。
1 2 3 4 5 6 7 8 9 10
| SpannableString span = new SpannableString("代码实现"); ImageSpan imageSpan = new ImageSpan(BitmapFactory.decodeResource(getResources(), R.drawable.ic_l1)); span.setSpan(imageSpan, 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); Tv_2.setText(span); Tv_2.append("我的按钮"); SpannableString span2 = new SpannableString("代码实现2"); ImageSpan imageSpan2 = new ImageSpan(BitmapFactory.decodeResource(getResources(), R.drawable.ic_l2)); span2.setSpan(imageSpan2, 0,4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); Tv_2.append(span2);
|
首先我们先new一个SpannableString
的对象,然后new一个图片的span对象,资源使我们的图片,然后将其放入SpannableString
中,然后最终实现其效果,这里需要注意的是:字符长度是Unicode编码,所以中文也是占一个字符的。