Android ZoomButton

分享到:

ZommButton控件是一个缩放按钮,做用在其它控件或View上使之能放大或缩小,单独使用没有实际意义。可以把ZommButton控件理解成覆盖了图片的普通button。本文给出了一个实例可供参考。

ZommButton类结构:

public class ZoomButton extends ImageButton implements View.OnLongClickListener

java.lang.Object
	android.view.View
		android.widget.ImageView
			android.widget.ImageButton
				android.widget.ZoomButton

ZoomButton实例:
本例通过两个ZoomButton控件分别对TextView进行控制,每点一次放大按钮TextView字号放大1像素,每点一次缩小按钮TextView字号缩小1像素,效果如下图所示:

ZoomButton实例
ZoomButton实例

主界面XML布局代码:
要注意ZoomButton的android:src属性,默认值都是"@android:drawable/btn_plus",效果是一个放大镜。如果需要缩小镜改成@android:drawable/btn_minus即可。如本例代码:
android:src="@android:drawable/btn_plus" ,对应放大
android:src="@android:drawable/btn_minus", 对应缩小

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools"
          android:layout_width="match_parent"
          android:layout_height="match_parent" >

         <TextView
          android:id="@+id/textView1"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:text="@string/hello_world" />

         <ZoomButton
          android:id="@+id/zoomButton1"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentLeft="true"
          android:layout_below="@+id/textView1"
          android:src="@android:drawable/btn_plus" />

         <ZoomButton
          android:id="@+id/zoomButton2"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentLeft="true"
          android:layout_alignTop="@+id/zoomButton1"
          android:layout_marginLeft="51dp"
          android:src="@android:drawable/btn_minus" />

</RelativeLayout>

Activity源码:

package com.my.androidtest;

import android.app.Activity;
import android.os.Bundle;
import android.util.TypedValue;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
import android.widget.ZoomButton;

public class ZoomButtonActivity extends Activity {
          ZoomButton zoomButton1,zoomButton2;
          TextView textView;
          @Override
          protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_zoom_button);
  
          textView=(TextView)this.findViewById(R.id.textView1);
          textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, 40);//设置字号大小为40px
  
          zoomButton1=(ZoomButton)this.findViewById(R.id.zoomButton1);
          zoomButton2=(ZoomButton)this.findViewById(R.id.zoomButton2);
  		
          //放大按钮点击事件
          zoomButton1.setOnClickListener(new OnClickListener(){
          @Override
          public void onClick(View arg0) {
          //字体大小在原基础上+1像素
          textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, (float)(textView.getTextSize()+1));
          }
          });
  
          //缩小按钮点击事件
          zoomButton2.setOnClickListener(new OnClickListener(){
          @Override
          public void onClick(View arg0) {
          //字体大小在原基础上-1像素
          textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, (float)(textView.getTextSize()-1));
          }
          });
  
          }
}

ZommButton公共方法,仅供参考:

public boolean dispatchUnhandledMove (View focused, int direction)
对于获得焦点的View,这个方法是捕获箭头事件最后的机会。这就是在获取焦点的View没有在内部处理、系统在要求的方向也不能找到一个新的View让其获得焦点时调用。
参数 focused当前焦点View, direction焦点移动的方向。其中之一:FOCUS_UP, FOCUS_DOWN, FOCUS_LEFT和 FOCUS_RIGHT.
返回值 如果为true,将清除这个View未处理的事件。

public boolean onKeyUp (int keyCode, KeyEvent event)
默认实现至KeyEvent.Callback.onKeyMultiple() :当点击执行时KEYCODE_DPAD_CENTER 或 KEYCODE_ENTER被释放。
参数 keyCode 按下按钮代表的键值,属于KeyEvent (注:KeyEvent的静态属性)。
event 该KeyEvent对象,定义按钮动作
返回值 如果您处理这一事件中,返回true。如果你想允许事件被下一个接收器处理,返回false

public boolean onLongClick (View v)
当一个View被长按时调用
参数 v 被长按的View。
返回值 如果返回true,这个回调在长按时被执行了,反之返回false.

public boolean onTouchEvent (MotionEvent event)
实现这个方法处理触摸屏移动事件。
参数 event 该移动事件.
返回值 如果是true,该事件是触摸,反之返回false。

public void setEnabled (boolean enabled)
设置这个View启用状态。
参数enabled 设置true表示启用,反之表示禁用。

public void setZoomSpeed (long speed)
单独使用无实际意义,可以用来存放临时数据

昵    称:
验证码:

相关文档:

Android控件
Android基础知识
Android组件
Android实例