2011-05-02 95 views
3

我试图找到一个代码,它将在最初启动时在已安装的应用程序上执行一个弹出窗口。就像开始出现在越来越多的应用程序中的更新日志一样。 我发现了一些类似的代码,但是作为初学者,我还没有弄清楚在哪里准确地放入代码,而且我总是有大量的错误,一旦我尝试修复它们,仍然无法正常工作。 我在Eclipse中使用一个android项目工作,并使用webview来显示一个网站。在初始启动时,Android应用程序的弹出窗口

XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" android:layout_height="fill_parent"> 



<WebView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/webview" 
    android:layout_height="fill_parent" android:layout_width="fill_parent" android:scrollbarAlwaysDrawVerticalTrack="false"/> 

</LinearLayout> 

Java文件:

package com.A2Ddesigners.WhatThe; 

import android.app.Activity; 
import android.os.Bundle; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.view.KeyEvent; 


public class Whatthe extends Activity { 
    WebView webview; 
    /** Called when the activity is first created. */ 
    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) { 
      webview.goBack(); 
      return true; 
     } 
     return super.onKeyDown(keyCode, event); 
    } 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     webview = (WebView) findViewById(R.id.webview); 
     webview.setWebViewClient(new HelloWebViewClient()); 
     webview.getSettings().setJavaScriptEnabled(true); 
     webview.setInitialScale(50); 
     webview.getSettings().setUseWideViewPort(true); 
     webview.loadUrl("http://mdsitest2.com/"); 
    } 
    private class HelloWebViewClient extends WebViewClient { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      view.loadUrl(url); 
      return true; 


      } 

      } 
     } 

回答

0

听起来像是你应该使用自定义对话框。 http://developer.android.com/guide/topics/ui/dialogs.html

在页面底部有一个代码示例。为了显示它,你可以在onCreate()方法中从你的主要活动中调用onCreateDialog(int)。

+0

我已经试过了,我已经没有能够得到它的工作,更让它在第一次应用只工作启动。我会再试几次。 – 2011-05-02 23:59:16

+0

你还在遇到麻烦吗? – 2011-07-14 16:18:41

0

PopupWindow.showAsDropDown()在延迟的过程中可以解决这个问题,可以通过执行显示popupWindowonCreate()方法以0.5秒的延迟。

+0

使用延迟并不总能保证所需的结果,因为您无法预测您的应用在其上运行的设备的速度。最好使用视图的“post”方法 – Muzikant 2013-02-22 10:26:35

0

您应该使用PopupWindow.showAtLocation,但使用活动视图之一的post方法。您还可以使用findViewById(android.R.id.content)使用活动的根视图。 你的代码应该是这样的:

View anyView = findViewById(R.id.anyView); 
anyView.post(new Runnable() 
{ 
    @Override 
    public void run() 
    { 
     // Create and show PopupWindow 
    } 
}); 
1

使用我这个代码可以显示对活动的INTIAL时间的任何类型的视图弹出。

import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.widget.LinearLayout; 
import android.widget.PopupWindow; 

public class PopupDispaly extends Activity { 
    private PopupWindow outComePopup; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_tiwter_login); 
     final View anyView = findViewById(R.id.popo_up); // define heade your view 
     anyView.postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       callFirstToolTip(anyView); 
      } 
     }, 5000); // hear you can put your delay time like 5000 mls 

    } 
    public void callFirstToolTip(View view) { 
     Log.i("Started Info","popup"); 
     View layout = LayoutInflater.from(PopupDispaly.this).inflate(R.layout.popup_copy_delete, null); // define hear your layout file id. 
     LinearLayout layCopyDelete = (LinearLayout) layout.findViewById(R.id.layCopyDelete);// hear define your id of sub lay like LinearLayout. 
     outComePopup = new PopupWindow(layout); 
     outComePopup.setFocusable(true); 
     layCopyDelete.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED); 
     outComePopup.setWidth(layCopyDelete.getMeasuredWidth()); 
     outComePopup.setHeight(layCopyDelete.getMeasuredHeight()); 
     outComePopup.setBackgroundDrawable(getResources().getDrawable(android.R.color.transparent)); 
     outComePopup.setOutsideTouchable(true); 
     outComePopup.showAsDropDown(view); 
    } 

} 

而且我Custome查看布局文件

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/got_it_bg" 
    android:layout_gravity="center_horizontal" 
    android:id="@+id/layCopyDelete" 
    android:layout_marginLeft="100dp" 
    android:orientation="horizontal"> 

</LinearLayout> 
+0

像魅力一样工作! – avidProgrammer 2017-09-15 15:32:26

+0

感谢您的赞赏。 – 2017-09-15 15:33:40

相关问题