当前位置:  建站其它 iis7站长之家
本页文章导读:
    ▪Java多态机制中的绑定守则        Java多态机制中的绑定规则 package com.example; public class Base { String var = "BaseVar"; // 实例变量 static String staticVar = "StaticBaseVar"; // 静态变量 void method() // 实例方法 { System.out.println("Base method");.........
    ▪ 7.1.2 DatePicker组合案例详解        7.1.2 DatePicker结合案例详解 DatePicker是Android的日期设置控件。DatePicker类的继承图如下:java.lang.Object   ↳android.view.View    ↳android.view.ViewGroup    ↳android.widget.FrameLayout    ↳android.w.........
    ▪ 自动调整TextView字体大小以顺应文字长度&拖动一个角增大textView面积       自动调整TextView字体大小以适应文字长度&拖动一个角增大textView面积 效果是 当字数少的时候 字体最大,随着字数的增多字体逐渐减小。 import android.content.Context; import android.graphics.Paint; .........

[1]Java多态机制中的绑定守则
    来源: 互联网  发布时间: 2014-02-18
Java多态机制中的绑定规则
package com.example;

public class Base {

	String var = "BaseVar"; // 实例变量
	static String staticVar = "StaticBaseVar"; // 静态变量

	void method() // 实例方法
	{
		System.out.println("Base method");
	}

	static void staticMethod() // 静态方法
	{
		System.out.println("Static Base method");
	}

}

package com.example;

public class Sub extends Base {

	String var = "SubVar"; // 实例变量
	static String staticVar = "StaticSubVar"; // 静态变量

	void method() // 隐藏父类的method()方法
	{
		System.out.println("Sub method");
	}

	static void staticMethod() // 隐藏父类的staticMethod()方法
	{
		System.out.println("Static Sub method");
	}

	String subVar = "Var only belonging to Sub";

	void subMethod() {
		System.out.println("method only belonging to Sub");
	}

	public static void main(String args[]) {
		// 引用变量who被声明为Base类型,引用Sub类的实例
		Base who = new Sub();

		// 成员变量(静态变量,实例变量)与引用变量所声明的类型(Base类型)的成员变量绑定
		System.out.println("who.var = " + who.var); // 所以,打印Base类的var变量

		System.out.println("who.staticVar = " + who.staticVar); // 所以,打印Base类的staticVar变量

		// 实例方法与引用变量实际引用的对象(Sub对象)的方法绑定
		who.method(); // 所以,打印Sub实例的method()方法

		// 静态方法与引用变量所声明的类型(Base类型)的方法绑定
		who.staticMethod(); // 所以,打印Base类的staticMethod()方法
	}
}


1.对于一个引用类型的变量,Java编译器按照它声明的类型来处理.
   例如在以下代码中,编译器认为who是Base类型的引用变量,不存在subVar成员变量和subMethod()方法,编译报错
    Base who = new Sub(); //引用变量who被声明为Base类型,引用Sub类的实例
          who.subVar = "123";   //编译错,在Base类中没有subVar属性
          who.subMethod();   //编译错,在Base类中没有submethod()方法

   如果要访问Sub类的成员,必须通过强制类型转换:
   Base who = new Sub();
   //把Base引用类型的who成员变量强制转换为Sub引用类型
   //把引用变量转换为子类的类型称为向下转型,把引用变量转换为父类的类型称为向上转型
   ((Sub)who).subVar = "123";
   ((Sub)who).subMethod();
   Java编译器允许在具有直接或间接继承关系的类之间进行类型转换,对于向上转型,Java编译器会自动进行,对于向下转型,需要进行强制类型转换
   如果两种类型之间没有继续关系,即不在继承树的同一个继承分支上,那么Java编译器不允许进行类型转换

2.对于一个引用类型的变量,运行时Java虚拟机按照它实际引用的对象来处理
   例如以下代码虽编译可通过,但运行时会抛出ClassCastException运行时异常
   Base who = new Base();   //who引用Base类的实例
   Sub s = (Sub)who;   //运行时会抛出ClassCastException
   在运行时,子类的对象可以转换为父类类型,而父类的对象实际上无法转换为子类类型

3, 在运行时环境中,通过引用类型变量来访问所引用对象的方法和属性时,Java虚拟机采用以下绑定规则:
   1, 实例方法与引用变量实际引用的对象的方法绑定,这种绑定属于动态绑定,因为是在运行时由Java虚拟机动态决定的

   2, 静态方法与引用变量所声明的类型的方法绑定,这种绑定属于静态绑定,因为实际上是在编译阶段就已经绑定

   3, 成员变量(静态变量,实例变量)与引用变量所声明的类型的成员变量绑定,这种绑定属于静态绑定,因为实际上是在编译阶段就已经绑定




    
[2] 7.1.2 DatePicker组合案例详解
    来源: 互联网  发布时间: 2014-02-18
7.1.2 DatePicker结合案例详解
DatePicker是Android的日期设置控件。DatePicker类的继承图如下:
java.lang.Object
   ↳android.view.View
   ↳android.view.ViewGroup
   ↳android.widget.FrameLayout
   ↳android.widget.DatePicker
android.widget.DatePicker继承了android.widget.FrameLayout框架布局类。DatePicker例子如图7-7所示,从左到右是年、月、日的设置,改变年月日都会触发OnDateChanged事件,当点击“按钮”可以获得当前设置的时间。
 


图7-7 DatePicker
请参考代码清单7-6,完整代码请参考chapter7_1工程中chapter7_DatePicker代码部分。
【代码清单7-6】
public class chapter7_DatePicker extends Activity {
	private TextView mDateDisplay;
	private DatePicker datePicker;
	private Calendar c;
	private Button button;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.datepicker_layout);
		datePicker = (DatePicker) findViewById(R.id.datePicker);

		c = Calendar.getInstance();
		mDateDisplay = (TextView) findViewById(R.id.datetextview);
		datePicker.init(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c
				.get(Calendar.DAY_OF_MONTH),
				new DatePicker.OnDateChangedListener() {
					public void onDateChanged(DatePicker view, int year,
							int monthOfYear, int dayOfMonth) {
						mDateDisplay.setText("[" + year + "-"
								+ (monthOfYear + 1) + "-" + dayOfMonth + "]"
								+ "[" + view.getYear() + "-"
								+ (view.getMonth() + 1) + "-"
								+ view.getDayOfMonth() + "]");

					}

				});

		button = (Button) findViewById(R.id.Button01);
		button.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				mDateDisplay.setText(String.valueOf(datePicker.getYear())
						+ " - " + String.valueOf(datePicker.getMonth() + 1)
						+ " - " + String.valueOf(datePicker.getDayOfMonth()));
			}
		});
	}
}

Calendar.getInstance()会获得一个Calendar实例,这是一个日期实例,通过它的get(Calendar.YEAR)方法可以获得年,get(Calendar.MONTH)方法加1获得月, get(Calendar.DAY_OF_MONTH)方法获得日期。DataPicker控件的核心代码是init方法:
datePicker.init(c.get(Calendar.YEAR),c.get(Calendar.MONTH),c.get(Calendar.DAY_OF_MONTH), new DatePicker.OnDateChangedListener() {…}
在init方法中初始化DataPicker和事件的处理。
DataPicker的布局文件请参考代码清单7-7,完整代码请参考chapter7_1工程中datepicker_layout.xml代码部分(chapter7_1/res/layout/datepicker_layout.xml)。
【代码清单7-7】
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" android:layout_width="fill_parent"
	android:layout_height="fill_parent">
	<TextView android:layout_width="fill_parent"
		android:layout_height="wrap_content" android:text="@string/hello" />
	<DatePicker android:id="@+id/datePicker"
		android:layout_width="wrap_content" android:layout_height="wrap_content">
	</DatePicker>
	<TextView android:id="@+id/datetextview" android:layout_width="fill_parent"
		android:layout_height="wrap_content" android:text="@string/hello" />

	<Button android:text="按钮" android:id="@+id/Button01"
		android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
</LinearLayout>

                                 出自《Android开发案例驱动教程》第七章

    
[3] 自动调整TextView字体大小以顺应文字长度&拖动一个角增大textView面积
    来源: 互联网  发布时间: 2014-02-18
自动调整TextView字体大小以适应文字长度&拖动一个角增大textView面积
效果是 当字数少的时候 字体最大,随着字数的增多字体逐渐减小。
import android.content.Context;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.widget.TextView;

public class CustomTextView extends TextView {

	private static float DEFAULT_MIN_TEXT_SIZE = 10;
	private static float DEFAULT_MAX_TEXT_SIZE = 20;

	// Attributes
	private Paint testPaint;
	private float minTextSize, maxTextSize;

	public CustomTextView(Context context, AttributeSet attrs) {
		super(context, attrs);
		initialise();
	}

	private void initialise() {
		testPaint = new Paint();
		testPaint.set(this.getPaint());

		// max size defaults to the intially specified text size unless it is
		// too small
		maxTextSize = this.getTextSize();

		if (maxTextSize <= DEFAULT_MIN_TEXT_SIZE) {
			maxTextSize = DEFAULT_MAX_TEXT_SIZE;
		}

		minTextSize = DEFAULT_MIN_TEXT_SIZE;
	};

	/**
	 * Re size the font so the specified text fits in the text box * assuming
	 * the text box is the specified width.
	 */
	private void refitText(String text, int textWidth) {
		if (textWidth > 0) {
			int availableWidth = textWidth - this.getPaddingLeft()
					- this.getPaddingRight();
			float trySize = maxTextSize;
			testPaint.setTextSize(trySize);
			while ((trySize > minTextSize)
					&& (testPaint.measureText(text) > availableWidth)) {
				trySize -= 1;
				if (trySize <= minTextSize) {
					trySize = minTextSize;
					break;
				}
				testPaint.setTextSize(trySize);
			}
			this.setTextSize(trySize);
		}
	};

	@Override
	protected void onTextChanged(CharSequence text, int start, int before,
			int after) {
		super.onTextChanged(text, start, before, after);
		refitText(text.toString(), this.getWidth());
	}

	@Override
	protected void onSizeChanged(int w, int h, int oldw, int oldh) {
		if (w != oldw) {
			refitText(this.getText().toString(), w);
		}
	}
}



拖动一个角增大textView面积
public class EditTextClass extends Activity implements OnTouchListener {

    private EditText txt;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        txt = (EditText) findViewById(YourEditTextId);
        txt.setOnTouchListener(this);
    }


    @Override
    public boolean onTouch(View v, MotionEvent event) {
       if(event.getX() >= txt.getWidth() - 5 && event.getX() <= txt.getWidth()
            event.getY() >= txt.getHeight() - 5 && event.getY() <= txt.getHeight()) {
           txt.setWidth(event.getX()); 
           txt.setHeight(event.getY());
       }
       return true;
    }
}


ImageView伸缩动画效果
http://edison-cool911.iteye.com/blog/870339
1 楼 安轩之 2011-09-20  
楼主,你写的是否有误???

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3