AlertDialog编辑框无法调出输入法、锁定Activity方向、自定义进度条的WebView基础使用

来源:互联网 发布:雅思7分有多难 知乎 编辑:程序博客网 时间:2024/05/24 01:45

1.安卓系统的AlertDialog中点击EditText无法调出系统输入法软键盘的貌似,如下写即可调出

  AlertDialog.Builder mBuilder = new AlertDialog.Builder(MainActivity.this);
 LayoutInflater li = LayoutInflater.from(MainActivity.this);
 View dialogView = li.inflate(R.layout.dialog_login, null);
 final TextView username = (TextView) dialogView.findViewById(R.id.dialoglogin_username);
 Button login = (Button) dialogView.findViewById(R.id.dialoglogin_btn_yes);
 Button cancel = (Button) dialogView.findViewById(R.id.dialoglogin_btn_no);
 final AlertDialog dialog= mBuilder.create();
 dialog.setCancelable(false);
 dialog.setView(new EditText(MainActivity.this));//只有添加这句话才能让AlertDialog能够调用输入法
 dialog.show();
 dialog.setContentView(dialogView);

2.锁定Activity为水平方向,防止屏幕旋转在AndroidManifest.xml中相应的Activity中配置:     android:screenOrientation="portrait"

同时,安卓默认的屏幕旋转会销毁当前Activity再重新onCreate(),所以当前Activity变量都会被重置,为了不重新oncreate()需要在activity配置文件中配置      android:configChanges="keyboardHidden|orientation|screenSize",这样当屏幕旋转的时候只会触发以下方法

@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
//判断当前是横屏还是竖屏显示不同的布局
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
{//竖屏
menuGrid.setNumColumns(2);
} else
{
// 横屏
menuGrid.setNumColumns(4);
}


}

3.带自定义进度条的WebView展示html内容

Activity代码如下:

public class WebBrowserActivity extends Activity {
private WebView wv_energy_baidu;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.wv_baidu);
init();
}

private void init(){

String home_url="http://www.baidu.com";
Intent i = getIntent();
if(i.hasExtra("url"))home_url= i.getExtras().getString("url");
final TextView webtitle = (TextView) findViewById(R.id.webbrowser_webtitle);
LinearLayout backLayout = (LinearLayout) findViewById(R.id.webbrowser_backicon);
final ProgressBar pb = (ProgressBar) findViewById(R.id.webbrowser_myProgressBar);
pb.setMax(100);
wv_energy_baidu = (WebView) findViewById(R.id.wv_energy_baidu);
backLayout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
            finish();
}
});


        //WebView加载web资源
wv_energy_baidu.loadUrl(home_url);
        //覆盖WebView默认使用第三方或系统默认浏览器打开网页的行为,使网页用WebView打开
wv_energy_baidu.setWebViewClient(new WebViewClient(){
           @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            // TODO Auto-generated method stub
               //返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器
             view.loadUrl(url);
            return true;
        }
       });
wv_energy_baidu.setWebChromeClient(new WebChromeClient(){
            @Override
            public void onReceivedTitle(WebView view, String title) {
//               setTitle(title);
               webtitle.setText(title);
            }
            @Override
         public void onProgressChanged(WebView view, int newProgress) {
             if(newProgress<100){
                 if(pb.getVisibility()==View.GONE)
                     pb.setVisibility(View.VISIBLE);
                 pb.setProgress(newProgress);
             }else{
                 pb.setProgress(100);
                 Animation animation=AnimationUtils.loadAnimation(WebBrowserActivity.this, R.anim.webprogress_animation);
                 // 运行动画 animation  
                 pb.startAnimation(animation);  
                 // 将 spinner 的可见性设置为不可见状态  
                 pb.setVisibility(View.INVISIBLE); 
             }
             super.onProgressChanged(view, newProgress);
         }
        });
    }
private void initData() {
WebSettings settings = wv_energy_baidu.getSettings();
settings.setJavaScriptEnabled(true);

}
public boolean onKeyDown(int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub
        if(keyCode==KeyEvent.KEYCODE_BACK)
        {
            if(wv_energy_baidu.canGoBack())
            {
            wv_energy_baidu.goBack();//返回上一页面
                return true;
            }
            else
            {
            finish();
//                System.exit(0);//退出程序
            }
        }
        return super.onKeyDown(keyCode, event);
    }
}

wv.xml文件内容如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/main_bg"
     >
       <RelativeLayout 
    android:id="@+id/webbrowser_top"
    android:layout_width="fill_parent"  
    android:layout_height="45dp"  
    android:background="#00a9ff"
    >
         
         <LinearLayout
  android:id="@+id/webbrowser_backicon"
    android:layout_width="wrap_content"  
    android:layout_height="30dp"  
    android:orientation="horizontal"
     android:clickable="true"
     android:layout_centerVertical="true"
     android:gravity="center_vertical"
      android:layout_alignParentLeft="true"
    >
         <ImageButton
             android:layout_marginLeft="5dp"
            android:layout_width="26dp"
            android:layout_height="match_parent"
            android:background="@null"
            android:src="@drawable/backarrow"
            />
         <TextView 
          android:layout_width="wrap_content" 
    android:layout_height="wrap_content"  
        android:text="关闭"
        android:textColor="#FFFFFF"
         android:textSize="17sp"
        />
        </LinearLayout>
    <TextView 
          android:id="@+id/webbrowser_webtitle"
          android:layout_width="wrap_content" 
          android:layout_toRightOf="@id/webbrowser_backicon"
          android:layout_marginLeft="20dp"
          android:layout_centerVertical="true"
    android:layout_height="wrap_content"  
    android:ellipsize="end"
    android:singleLine="true"
        android:textColor="#FFFFFF"
         android:textSize="18sp"
        />
    </RelativeLayout>
       <ProgressBar
      style="?android:attr/progressBarStyleHorizontal"
        android:id="@+id/webbrowser_myProgressBar"
       android:layout_below="@id/webbrowser_top"
        android:layout_width="match_parent"
         android:progressDrawable="@drawable/mystle_progress"
        android:layout_height="2dp"
        />
       <WebView 
        android:id="@+id/wv_energy_baidu"
        android:layout_below="@id/webbrowser_myProgressBar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />
</RelativeLayout>

mystyle_progress.xml文件内容如下:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >


    <item android:id="@android:id/background">


        <shape>


            <corners android:radius="5dip" />


            <gradient
                android:angle="0"
                android:centerY="0.75"
                android:centerColor="#ffFFFFFF"
                android:endColor="#ffFFFFFF"
                android:startColor="#ffFFFFFF" 
                />
<!--
android:centerColor="#ff5a5d5a"                  
android:endColor="#ff747674"
                android:startColor="#ff9d9e9d"  -->
        </shape>
    </item>


    <item android:id="@android:id/secondaryProgress">


        <clip>


            <shape>


                <corners android:radius="5dip" />


                <gradient
                    android:angle="0"
                    android:centerY="0.75"
                     android:centerColor="#ffFFFFFF"
                android:endColor="#ffFFFFFF"
                android:startColor="#ffFFFFFF"  />
                <!-- android:centerColor="#80ffb600"
                    android:endColor="#a0ffcb00"
                    android:startColor="#80ffd300" -->
            </shape>
        </clip>
    </item>


    <item android:id="@android:id/progress">


        <clip>


            <shape>


                <corners android:radius="5dip" />


                <gradient
                    android:angle="0"
                     android:endColor="#ffFFFFFF" 
                android:startColor="#ff00CD00"
                    />
                <!--  android:endColor="#8000ff00"
                    android:startColor="#80ff0000"  -->
            </shape>
        </clip>
    </item>


</layer-list>



0 0
原创粉丝点击