- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用以下代码在 fragment 的弹出窗口中创建饼图。
mChartView = ChartFactory.getPieChartView(getActivity(), distributionSeries, defaultRenderer);
popupWindow = new PopupWindow(mChartView, LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT, false);
popupWindow.setOutsideTouchable(true);
popupWindow.showAsDropDown(mChartView, 50, 50);
popupWindow.setTouchInterceptor(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
popupWindow.dismiss();
}
return false;
}
});
这是我的完整代码。
public class MainActivity extends SherlockFragmentActivity {
private SectionsPagerAdapter mSectionsPagerAdapter;
private ViewPager mViewPager;
private Boolean is3g, isWifi;
private int networkType;
private TelephonyManager telephonyInfo;
static Integer[] pics = { R.drawable.route, R.drawable.two,
R.drawable.three, R.drawable.four };
static ImageAdapter imgAdp;
private static PopupWindow popupWindow = null;
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
@Override
public void onBackPressed() {
if(popupWindow != null) {
popupWindow.dismiss();
} else {
super.onBackPressed();
}
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getSupportMenuInflater().inflate(R.menu.banner, menu);
return true;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imgAdp = new ImageAdapter(MainActivity.this);
mSectionsPagerAdapter = new SectionsPagerAdapter(
getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);
ActionBar actionBar = getActionBar();
actionBar.setDisplayShowTitleEnabled(true);
// network connection manager
ConnectivityManager manager = (ConnectivityManager) getSystemService(LoginActivity.CONNECTIVITY_SERVICE);
is3g = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE)
.isConnectedOrConnecting();
isWifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
.isConnectedOrConnecting();
telephonyInfo = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
networkType = telephonyInfo.getNetworkType();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_accept:
Intent sales = new Intent(getApplicationContext(),
SalesRouteFragment.class);
Intent showContent = new Intent(getApplicationContext(),
DownloadUploadPagerActivity.class);
Bundle bundle = new Bundle();
bundle.putString("name", "MainActivity");
if (is3g || isWifi) {
Toast.makeText(MainActivity.this, "WIFI/3G is availabe ",
Toast.LENGTH_LONG).show();
showContent.putExtras(bundle);
startActivity(showContent);
finish();
return true;
} else if (networkType == TelephonyManager.NETWORK_TYPE_GPRS) {
Toast.makeText(MainActivity.this, "GPRS is availabe ",
Toast.LENGTH_LONG).show();
showContent.putExtras(bundle);
startActivity(showContent);
finish();
return true;
} else {
Toast.makeText(MainActivity.this,
"There is no internet connectivity", Toast.LENGTH_LONG)
.show();
sales.putExtras(bundle);
startActivity(sales);
finish();
return true;
}
case R.id.ac_exit:
AlertDialog.Builder exitCon = new AlertDialog.Builder(
MainActivity.this);
exitCon.setMessage("Do you want to Exit? ");
exitCon.setCancelable(false);
exitCon.setPositiveButton("Yes",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
try {
removePrefrence();
Intent exit = new Intent(MainActivity.this,
LoginActivity.class);
Bundle bdle = new Bundle();
bdle.putString("name", "LoginActivity");
exit.putExtras(bdle);
startActivity(exit);
finish();
} catch (Exception e) {
e.printStackTrace();
}
}
});
exitCon.setNegativeButton("No",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
exitCon.setTitle("Exit...");
exitCon.show();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
// Exit
public void removePrefrence() {
SharedPreferences myLogPrefs = MainActivity.this.getSharedPreferences(
"myLogedPrefs", MODE_PRIVATE);
SharedPreferences myRoutes = MainActivity.this.getSharedPreferences(
"myRoute", MODE_PRIVATE);
Date date = new Date();
DateFormat dateOnlyFormatter = new SimpleDateFormat("yyyy-MM-dd");
String strDateOnly = dateOnlyFormatter.format(date);
String loggedDate = myLogPrefs.getString("LoggedDate", "");
if (loggedDate.equals(strDateOnly)) {
} else {
SharedPreferences.Editor prefsEditor = myLogPrefs.edit();
myLogPrefs.getAll();
prefsEditor.remove("myLogedPrefs");
prefsEditor.clear();
prefsEditor.commit();
SharedPreferences.Editor routePrefence = myRoutes.edit();
myRoutes.getAll();
routePrefence.remove("myRoute");
routePrefence.clear();
routePrefence.commit();
}
}
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public CharSequence getPageTitle(int position) {
Locale l = Locale.getDefault();
switch (position) {
case 0:
return getString(R.string.title_section1).toUpperCase(l);
case 1:
return getString(R.string.title_section2).toUpperCase(l);
}
return null;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
Fragment fragment = new DummySectionFragment();
Bundle args = new Bundle();
args.putInt(DummySectionFragment.ARG_SECTION_NUMBER,
position + 1);
fragment.setArguments(args);
return fragment;
case 1:
Fragment fment1 = new DummySectionFragment();
Bundle args1 = new Bundle();
args1.putInt(DummySectionFragment.ARG_SECTION_NUMBER,
position + 1);
fment1.setArguments(args1);
return fment1;
case 2:
case 3:
default:
Fragment fment = new DummySectionFragment();
Bundle ars = new Bundle();
ars.putInt(DummySectionFragment.ARG_SECTION_NUMBER,
position + 1);
fment.setArguments(ars);
return fment;
}
}
@Override
public int getCount() {
return 2;
}
}
public static class LaunchpadSectionFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = null;
Intent intent = new Intent(getActivity(), SalesRouteFragment.class);
startActivity(intent);
return rootView;
}
}
public static class DummySectionFragment extends Fragment {
public static final String ARG_SECTION_NUMBER = "section_number";
private String strBusinessUnit, strExeCode;
private Date date = new Date();
private DateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd");
private String sysDate = dateFormatter.format(date);
private ArrayList<XAPeriodEndDate> currentPerid_Yr = new ArrayList<XAPeriodEndDate>();
private int currentYear;
private int currentPeriod;
private TextView tvAsAt, tvTarget, tvAchieved, tvBalAchieve, tvBalDays,
tvPlanedRoute, tvOutlet, tvTargetVal;
private Button btnpieChart;
private ProgressBar progressBar;
private ArrayList<WMTargetExecAchieveSummary> lstExeSummaryData;
private DecimalFormat deciFormatter = new DecimalFormat("#.00");
private double target, bal_toAchieve, achieved, pertageAchieved,
dayTargetVal;
private String strStartDate, strEndDate;
private int balDays = 1, outletCount = 0;
private TreeMap<String, String> todayRouteMap = new TreeMap<String, String>();
private String todayRouteCode;
private HashMap<String, Double> chartDataMap = new HashMap<String, Double>();
private ArrayList<String> lstBrandNames = new ArrayList<String>();
private ArrayList<Double> lstAchievedVals = new ArrayList<Double>();
private GraphicalView mChartView = null;
private LinearLayout chart_container;
private View rootView = null;
public DummySectionFragment() {
}
@Override
public View onCreateView(final LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//View rootView = null;
if (getArguments().getInt(ARG_SECTION_NUMBER) == 1) {
rootView = inflater.inflate(R.layout.fragment_main_dummy,
container, false);
tvAsAt = (TextView) rootView.findViewById(R.id.tvAsAt);
tvAchieved = (TextView) rootView.findViewById(R.id.tvAchieved);
tvBalAchieve = (TextView) rootView.findViewById(R.id.tvBalAchieve);
tvBalDays = (TextView) rootView.findViewById(R.id.tvBalDays);
tvOutlet = (TextView) rootView.findViewById(R.id.tvOutlet);
tvPlanedRoute = (TextView) rootView.findViewById(R.id.tvPlanedRoute);
tvTarget = (TextView) rootView.findViewById(R.id.tvTarget);
tvTargetVal = (TextView) rootView.findViewById(R.id.tvTargetVal);
btnpieChart = (Button) rootView.findViewById(R.id.btnpieChart);
progressBar = (ProgressBar) rootView.findViewById(R.id.progressBar);
btnpieChart.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
SelectDBAdapter selectDBAdapter = SelectDBAdapter
.getDBAdapterInstance(getActivity());
try {
selectDBAdapter.openDataBase();
chartDataMap = selectDBAdapter
.getPieChartData(strBusinessUnit,
currentPeriod, currentYear);
} catch (Exception e) {
selectDBAdapter.close();
e.printStackTrace();
} finally {
selectDBAdapter.close();
}
System.out.println("chartDataMap === "+ chartDataMap);
if (chartDataMap.size() > 0) {
for (Map.Entry<String, Double> entry : chartDataMap.entrySet()) {
lstBrandNames.add(entry.getKey());
lstAchievedVals.add(entry.getValue());
}
ArrayList<Double> distribution = calc_Percentage(lstAchievedVals);
System.out.println("distribution === " + distribution);
lstBrandNames = set_lables(lstBrandNames, distribution);
CategorySeries distributionSeries = new CategorySeries(
"Brands - Achievement Progress");
for (int i = 0; i < distribution.size(); i++) {
distributionSeries.add(lstBrandNames.get(i), distribution.get(i));
}
DefaultRenderer defaultRenderer = new DefaultRenderer();
defaultRenderer.setApplyBackgroundColor(true);
defaultRenderer.setBackgroundColor(Color.WHITE);
defaultRenderer.setLabelsTextSize(25);
//defaultRenderer.setPanEnabled(true, false);
for (int i = 0; i < distribution.size(); i++) {
SimpleSeriesRenderer seriesRenderer = new SimpleSeriesRenderer();
Random rnd = new Random();
int color = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));
seriesRenderer.setColor(color);
seriesRenderer.setGradientEnabled(false);
seriesRenderer.setDisplayChartValues(true);
seriesRenderer.setShowLegendItem(false);
defaultRenderer.addSeriesRenderer(seriesRenderer);
}
defaultRenderer.setLabelsColor(Color.BLACK);
defaultRenderer.setChartTitle("Brands - Achievement Progress");
defaultRenderer.setChartTitleTextSize(30);
defaultRenderer.setZoomButtonsVisible(true);
defaultRenderer.setShowLabels(true);
if (mChartView == null) {
mChartView = ChartFactory.getPieChartView(getActivity(), distributionSeries, defaultRenderer);
} else {
mChartView.repaint();
}
//mChartView = ChartFactory.getPieChartView(getActivity(), distributionSeries, defaultRenderer);
//LayoutInflater layoutInflater = null;
//View popupView = layoutInflater.inflate(R.layout.popup, null);
//View popupView = inflater.inflate(R.layout.pie_chart, null);
popupWindow = new PopupWindow(mChartView, LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT, false);
popupWindow.setOutsideTouchable(true);
popupWindow.showAsDropDown(mChartView, 50, 50);
popupWindow.setBackgroundDrawable(new BitmapDrawable());
popupWindow.setTouchInterceptor(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
if (event.getAction() == MotionEvent.ACTION_OUTSIDE && event.getAction()==KeyEvent.KEYCODE_BACK) {
popupWindow.dismiss();
}
return false;
}
});
//popupWindow.showAtLocation(mChartView, Gravity.CENTER, 10, 10);
//popupWindow.update();
/*FragmentTransaction ft = getFragmentManager().beginTransaction();
//mChartView.setId(1000);
ft.replace(, new DummySectionFragment(), "NewFragmentTag");
ft.addToBackStack(null);
ft.commit();*/
//chart_container = new LinearLayout(getActivity());
//chart_container.setId(1);
//LinearLayout chartContainer = (LinearLayout) rootView.findViewById(
// R.id.chart_container);
//rootView = ChartFactory.getPieChartView(getActivity(), distributionSeries, defaultRenderer);
//chart_container.removeAllViews();
//chart_container.addView(mChartView);
/*ft.replace(rootView.getId(), new DummySectionFragment(), "NewFragmentTag");
//getActivity().setContentView(chart_container);
ft.addToBackStack(null);
ft.commit();*/
/*Intent intent = ChartFactory.getPieChartIntent(
getActivity(), distributionSeries,
defaultRenderer, "Dash Board");*/
//layout = new LinearLayout(getActivity());
//mChartView = ChartFactory.getPieChartView(getActivity(), distributionSeries, defaultRenderer);
/*Intent intent = ChartFactory.getPieChartIntent(
getActivity(), distributionSeries,
defaultRenderer, "Dash Board");*/
//getActivity().startActivity(intent);
/*layout.removeAllViews(); //This remove previous graph
layout.addView(mChartView); //This loads the graph again
layout.bringToFront();
getActivity().setContentView(layout);*/
}
}
});
} else if (getArguments().getInt(ARG_SECTION_NUMBER) == 2) {
rootView = inflater.inflate(R.layout.dashboard_vedio,
container, false);
VideoView videoView = (VideoView) rootView
.findViewById(R.id.videoView1);
MediaController mcontroller = new MediaController(
rootView.getContext());
mcontroller.setAnchorView(mcontroller);
String url = Environment.getExternalStorageDirectory()
+ "/XONT/BabyCheramy.mp4";
Uri video = Uri.parse(url);
videoView.setVideoURI(video);
videoView.setMediaController(mcontroller);
} else {
rootView = inflater.inflate(R.layout.fragment_main_dummy,
container, false);
}
return rootView;
}
}
public static ArrayList<Double> calc_Percentage(ArrayList<Double> list) {
ArrayList<Double> lstPercentage = new ArrayList<Double>();
double total = 0;
double precentage;
for (int i = 0; i < list.size(); i++) {
total = total + list.get(i);
}
System.out.println(total);
for (int j = 0; j < list.size(); j++) {
precentage = (list.get(j) / total) * 100;
lstPercentage.add(precentage);
}
return lstPercentage;
}
public static ArrayList<String> set_lables(ArrayList<String> lstBrandNames, ArrayList<Double> distribution) {
String G_lable;
DecimalFormat df = new DecimalFormat("#.00");
ArrayList<String> lstLabels = new ArrayList<String>();
for (int i = 0; i < lstBrandNames.size(); i++) {
G_lable = lstBrandNames.get(i) + " : " + df.format(distribution.get(i)) + "%";
lstLabels.add(G_lable);
}
return lstLabels;
}
public class ImageAdapter extends BaseAdapter {
private Context ctx;
int imageBackground;
public ImageAdapter(Context c) {
ctx = c;
TypedArray ta = obtainStyledAttributes(R.styleable.Gallery1);
imageBackground = ta.getResourceId(
R.styleable.Gallery1_android_galleryItemBackground, 1);
ta.recycle();
}
@Override
public int getCount() {
return pics.length;
}
@Override
public Object getItem(int arg0) {
return arg0;
}
@Override
public long getItemId(int arg0) {
return arg0;
}
public View getView(int arg0, View arg1, ViewGroup arg2) {
ImageView iv = new ImageView(ctx);
iv.setImageResource(pics[arg0]);
iv.setScaleType(ImageView.ScaleType.FIT_XY);
iv.setLayoutParams(new Gallery.LayoutParams(150, 120));
iv.setBackgroundResource(imageBackground);
return iv;
}
}
}
这是我的新代码。
private static boolean isChart = false;
popupWindow = new PopupWindow(mChartView, LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT, false);
popupWindow.setOutsideTouchable(true);
popupWindow.showAsDropDown(mChartView, 50, 50);
isChart = true;
@Override
public void onBackPressed() {
System.out.println("BACKED");
if(isChart) {
popupWindow.dismiss();
} else {
super.onBackPressed();
}
//return;
}
它显示了图表。但当我按下 Android 中的后退按钮时,它不会从饼图窗口返回。我该如何解决这个问题?任何建议都将受到高度赞赏。
提前致谢
最佳答案
您需要添加以下内容:
popupWindow.setBackgroundDrawable(new BitmapDrawable());
在创建弹出窗口时,否则由于未设置背景可绘制,它将不会对任何触摸事件使用react。
关于java - 安卓 : Issue in back from a pop up window,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20189958/
我想将 EditText 始终设置为 LTR,我该怎么做?android:textDirection 似乎确实是答案,我无法让项目使用该指令进行编译 最佳答案 为 editText 使用引力 andr
我希望我的应用在每次打开时都显示登录屏幕。使用 android:clearTaskOnLaunch="true" 一切正常。但是有一个错误,只有在手机关机并且应用程序首先使用小部件启动时才会发生。 I
实际上我的要求是我想将动态文件加载到像图像一样的网页中。视频,音频等,它来自 Assets 或应用程序自己的文件目录,这不是问题。 我尝试使用以下两种方式。 方式一 这是我的 html 文件在 ass
我正在触发一个 DatePickerDialog,在 api 22 (Android 5.1) 之前它一直在工作并显示良好,我在上面设置混合和最大日期(最小 = 当前日期,最大 = 从当前日期开始的
我有一个 ListView ,我在其中将标题 View 添加到该列表。一切都很好,但是当滚动列表 headerview 也随着列表移动时,所以我想避免 headerview 滚动,我的意思是当我列表到
虽然我在android上做过一些app,但我还是一头雾水。是否可以使用 SDK 4.0 中的功能,并在 android 2.1 或更低版本上运行该应用程序? 我尝试了你们提到的方法,但出现错误 - F
您好,我正在开发小型 android 应用程序,我想在其中显示带有一些元素的简单 gridview。它工作正常。唯一的问题是即使有空间,它也总是只显示两列。它平均将屏幕分成 2 列并仅显示两个元素。如
我正在使用 Android 2.3.3 API 构建一个应用程序。我需要识别方向的变化并执行一些操作。所以我在 Android Manifest 中添加了以下内容, android:configCha
我正在尝试在“点击”包含特定 MIME 类型的 nfc 标签时开始一项 Activity 。我制作了一个 mime 类型为“text/plain”的标签,并将其添加到 list 中:
我可以将一些数据保存到文件中 val byteArrayOutputStream = ByteArrayOutputStream() byteArrayOutputStream.wri
我正在尝试解析一个包含复杂阿拉伯字母的 XML 文件.. 当我在 android 2.3.7 上测试时,并不是所有的阿拉伯字母都被支持,仍然有一些复杂的显示为方 block .. 但是在 androi
我需要编写一个方法来确定设备是平板电脑还是手机。我不需要根据这个显示不同的用户界面。我只需要有关设备的信息,以便将来我可以将其发送到指标。 在互联网上,我找到了很多方法来确定设备是否是平板电脑。我已经
我正在玩文字转语音,让我的测试应用程序更有趣。它适用于模拟器,但不适用于我的手机,因为我的默认语言环境不是英语。 但是,文本是英文的,所以 tts 当然应该使用英文。据我所知,我可以实现一个自动安装,
我正在使用 MVVM 和整洁的架构编写应用程序。在其中一个屏幕上,我需要使用 pagination 实现 RecyclerView。我将使用库 Paging3。 Android 开发者推荐在存储库层使
这个问题在这里已经有了答案: I lost my .keystore file? (12 个回答) 4年前关闭。 当我以前的操作系统损坏并安装新的(7 月 3 日)时,以前的 android_key_
我正在使用 MVVM 和整洁的架构编写应用程序。在其中一个屏幕上,我需要使用 pagination 实现 RecyclerView。我将使用库 Paging3。 Android 开发者推荐在存储库层使
在我的 v27\style.xml 中,我有以下代码来设置白色导航栏: @color/colorPrimary @color/colorPrimaryDark @color/
我想通过发送电子邮件 startActivity(Intent.createChooser(new Intent(android.content.Intent.ACTION_SEND))) 我知道要将
我实现了一个自定义 ListView ,它看起来像 Twitter 时间线。 adapter = new MyClickableListAdapter(this, R.layout.timeline,
我有一个显示启动画面的自定义对话框; mSplashDialog = new Dialog(MyActivity.this,R.layout.splash); mSplashDialog.setCon
我是一名优秀的程序员,十分优秀!