WEB开发网
开发学院手机开发Android 开发 Android 自定义 UI 组件 阅读

Android 自定义 UI 组件

 2010-03-04 04:00:00 来源:WEB开发网   
核心提示:dial.setBounds(x - (w / 2), y - (h / 2), x + (w / 2), y + (h / 2));}dial.draw(canvas);canvas.save();//计算时针旋转的角度,android123提示就是那个时针图片的旋转角度,Android 自定义 UI 组件(4),/

dial.setBounds(x - (w / 2), y - (h / 2), x + (w / 2), y + (h / 2));

}

dial.draw(canvas);

canvas.save();

//计算时针旋转的角度,android123提示就是那个时针图片的旋转角度,

//直接反应的就是表盘上那个针的时间

canvas.rotate(mHour / 12.0f * 360.0f, x, y);

final Drawable hourHand = mHourHand;

if (changed) {

w = hourHand.getIntrinsicWidth();

h = hourHand.getIntrinsicHeight();

hourHand.setBounds(x - (w / 2), y - (h / 2), x + (w / 2), y + (h / 2));

}

hourHand.draw(canvas);

canvas.restore();

canvas.save();

canvas.rotate(mMinutes / 60.0f * 360.0f, x, y); //同理,分针旋转的角度

final Drawable minuteHand = mMinuteHand;

if (changed) {

w = minuteHand.getIntrinsicWidth();

h = minuteHand.getIntrinsicHeight();

minuteHand.setBounds(x - (w / 2), y - (h / 2), x + (w / 2), y + (h / 2));

}

minuteHand.draw(canvas);

canvas.restore();

if (scaled) {

canvas.restore();

}

}

private void onTimeChanged() { //获取时间改变,计算当前的时分秒

mCalendar.setToNow();

int hour = mCalendar.hour;

int minute = mCalendar.minute;

int second = mCalendar.second;

mMinutes = minute + second / 60.0f;

mHour = hour + mMinutes / 60.0f;

mChanged = true;

}

private final BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {

//监听获取时间改变action

@Override

public void onReceive(Context context, Intent intent) {

if (intent.getAction().equals(Intent.ACTION_TIMEZONE_CHANGED)) {

String tz = intent.getStringExtra("time-zone");

mCalendar = new Time(TimeZone.getTimeZone(tz).getID());

}

onTimeChanged(); //获取新的时间

invalidate(); //刷新屏幕,强制类调用onDraw方法实现分针时针的走动

}

};

上一页  1 2 3 4 

Tags:Android 定义 UI

编辑录入:coldstar [复制链接] [打 印]
赞助商链接