來談談 AutomatorViewer 前端顯示的部分 - UIAutomatorViewer.java
最主要的是滑鼠點擊後可選擇特定元素事件,以及滑動時的動態選擇事件
// 點擊選擇
mScreenshotCanvas.addMouseListener(new MouseAdapter() {
@Override
public void mouseUp(MouseEvent e) {
if (mModel != null) {
mModel.toggleExploreMode();
redrawScreenshot();
}
}
});
// 移動選擇
mScreenshotCanvas.addMouseMoveListener(new MouseMoveListener() {
@Override
public void mouseMove(MouseEvent e) {
if (mModel != null) {
int x = getInverseScaledSize(e.x - mDx);
int y = getInverseScaledSize(e.y - mDy);
// show coordinate
coordinateLabel.setText(String.format("(%d,%d)", x,y));
if (mModel.isExploreMode()) {
BasicTreeNode node = mModel.updateSelectionForCoordinates(x, y);
if (node != null) {
updateTreeSelection(node);
}
}
}
}
});
可以看到重繪 Canvas 的驅動方法有 redrawScreenshot() 跟 updateTreeSelection(node),事實上這是透過註冊 PaintListener 來重繪
mScreenshotCanvas.addPaintListener(new PaintListener() {
@Override
public void paintControl(PaintEvent e) {
if (mScreenshot != null) {
.....................
不過到這階段就是 jface 跟 swt 的事情了,跟 Android 沒太大關係就不多談。
No comments:
Post a Comment