Android 在此“中声明哪种类型的变量”;“可拖动弹出窗口”;密码?
我在弹出的Android活动文件中插入以下行(来自pskink post 3-2-14)。这将被放置在已在工作的项目中的Android 在此“中声明哪种类型的变量”;“可拖动弹出窗口”;密码?,android,variables,android-activity,draggable,declare,Android,Variables,Android Activity,Draggable,Declare,我在弹出的Android活动文件中插入以下行(来自pskink post 3-2-14)。这将被放置在已在工作的项目中的onCreate()中。AndroidStudio希望我将以下3项声明为局部变量、参数或字段。这三个是:mPopup、mCurrentX和mCurrentY。如果我只是尝试错误的方法,一次尝试一个,那可能会奏效,嗯?或者关于如何判断使用哪一个的想法 如果我选择“local”,则mPopup将更改为“PopupWindow” 如果我选择“参数”,AS会询问重构 代码如下: fin
onCreate()
中。AndroidStudio希望我将以下3项声明为局部变量、参数或字段。这三个是:mPopup
、mCurrentX
和mCurrentY
。如果我只是尝试错误的方法,一次尝试一个,那可能会奏效,嗯?或者关于如何判断使用哪一个的想法
final View cv = new View(this);
setContentView(cv);
TextView tv = new TextView(this);
tv.setBackgroundColor(0xffeeeeee);
tv.setTextColor(0xff000000);
tv.setTextSize(24);
tv.setText("click me\nthen drag me");
tv.setPadding(8, 8, 8, 8);
mPopup = new PopupWindow(tv, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
OnTouchListener otl = new OnTouchListener() {
private float mDx;
private float mDy;
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
if (action == MotionEvent.ACTION_DOWN) {
mDx = mCurrentX - event.getRawX();
mDy = mCurrentY - event.getRawY();
} else
if (action == MotionEvent.ACTION_MOVE) {
mCurrentX = (int) (event.getRawX() + mDx);
mCurrentY = (int) (event.getRawY() + mDy);
mPopup.update(mCurrentX, mCurrentY, -1, -1);
}
return true;
}
};
tv.setOnTouchListener(otl);
mCurrentX = 20;
mCurrentY = 50;
cv.post(new Runnable() {
@Override
public void run() {
mPopup.showAtLocation(cv, Gravity.NO_GRAVITY, mCurrentX, mCurrentY);
}
});
按照惯例,以“m”开头的变量是成员变量(类字段),而不是局部变量。在这种情况下,这看起来是正确的,因为它们需要在这些方法之外有一个生命周期