我想将统计页面显示为活动的弹出窗口。我的问题是如何将数据交给画布绘制它?
我的popupWindow xml是:
createPanel(50, 0, 100, 25, buttonNames)
我的弹出式启动片段是:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/gradient_dark_teal_bg">
<LinearLayout
android:id="@+id/llvStats"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/gradient_teal_bg"
android:orientation="vertical">
<TextView
android:id="@+id/txtBanner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="10dp"
android:gravity="center_vertical|center_horizontal|center"
android:text="STATISTICS"
android:textColor="@color/colorTeal1"
android:textSize="24sp"
android:textStyle="bold|italic" />
<com.mairyu.app.lingoflash.StatsDrawCanvas
android:id="@+id/statsCanvasDraw"
android:layout_below="@+id/txtBanner"
android:layout_width="400dp"
android:layout_height="500dp"
android:layout_column="1"
android:layout_gravity="left|top"
android:background="@drawable/gradient_light_teal_bg"
android:layout_row="0" />
</LinearLayout>
</RelativeLayout>
我想看到这样的事情:
由于这不是一项新活动,我不能使用intent / bundle方法来交换变量(或者我可以吗?)。如果它是简单的textview或其他小部件,我可以使用 case R.id.btnDatabaseStats:
layoutInflater = (LayoutInflater) getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);
popupView = layoutInflater.inflate(R.layout.stats_popup_window,null);
popupWindow = new PopupWindow(popupView,STATS_POPUP_WIDTH,STATS_POPUP_HEIGHT);
popupWindow.showAtLocation(findViewById(R.id.database_page),
Gravity.CENTER, STATS_POPUP_GRAVITY_X, STATS_POPUP_GRAVITY_Y);
LinearLayout llvStats = (LinearLayout) popupView.findViewById(R.id.llvStats);
llvStats.setOnTouchListener(new OnSwipeTouchListener(this) {
@Override
public void onSwipeLeft() {
popupWindow.dismiss();
}
});
等,但我需要在画布中获取数据。
我认为我仍然不了解如何使用setText
和其他画布功能,但是现在我只是对这些数字进行了硬编码。是否有一种简单的方法可以简单地从发布活动中获取这些数字(5/15/25)? (我尝试了一个全局变量,但它在onDraw
)
onDraw
希望这是明确的,而不是太业余......
答案 0 :(得分:0)
实际上看起来很简单,现在我只是在canvas类中使用方法调用:
Jan 31st
并在 public void setBar(ArrayList<Integer> left, ArrayList<Integer> top, ArrayList<Integer> right, ArrayList<Integer> bottom) {
barCoordLeft = left;
barCoordTop = top;
barCoordRight = right;
barCoordBottom = bottom;
invalidate();
}
中访问这些全局变量。
在我启动弹出窗口的活动中,我通过以下方式获取画布:
onDraw
然后通过方法调用传递数据:
statsDrawCanvas = (StatsDrawCanvas) popupView.findViewById(R.id.statsCanvasDraw);