Android应用程序完全退出当前四种方法及实现代码

 更新时间:2016年9月20日 19:57  点击:2237
以下是本人如何关闭整个Android应用程序呢总结的几种比较简单的实现方法,后面附了一个详细的例子源码。

1. Dalvik VM的本地方法

  android.os.Process.killProcess(android.os.Process.myPid())    //获取PID
  System.exit(0);   //常规java、c#的标准退出法,返回值为0代表正常退出

 

2. 任务管理器方法

   首先要说明该方法运行在Android 1.5 API Level为3以上才可以,同时需要权限

  ActivityManager am = (ActivityManager)getSystemService (Context.ACTIVITY_SERVICE);
  am.restartPackage(getPackageName());
  系统会将,该包下的 ,所有进程,服务,全部杀掉,就可以杀干净了,要注意加上
  <uses-permission android:name=\"android.permission.RESTART_PACKAGES\"></uses-permission>

3. 根据Activity的声明周期

我们知道Android的窗口类提供了历史栈,我们可以通过stack的原理来巧妙的实现,这里我们在A窗口打开B窗口时在Intent中直接加入标 志     Intent.FLAG_ACTIVITY_CLEAR_TOP,这样开启B时将会清除该进程空间的所有Activity。

在A窗口中使用下面的代码调用B窗口

Intent intent = new Intent();
intent.setClass(Android123.this, CWJ.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  //注意本行的FLAG设置
startActivity(intent);

接下来在B窗口中需要退出时直接使用finish方法即可全部退出。

 

4.自定义一个Actiivty 栈,道理同上,不过利用一个单例模式的Activity栈来管理所有Activity。并提供退出所有Activity的方法。代码如下:

   public class ScreenManager {
 private static Stack<Activity> activityStack;
 private static ScreenManager instance;
 private  ScreenManager(){
 }
 public static ScreenManager getScreenManager(){
  if(instance==null){
   instance=new ScreenManager();
  }
  return instance;
 }
//退出栈顶Activity
 public void popActivity(Activity activity){
  if(activity!=null){
   activity.finish();
   activityStack.remove(activity);
   activity=null;
  }
 }

//获得当前栈顶Activity
 public Activity currentActivity(){
  Activity activity=activityStack.lastElement();
  return activity;
 }

//将当前Activity推入栈中
 public void pushActivity(Activity activity){
  if(activityStack==null){
   activityStack=new Stack<Activity>();
  }
  activityStack.add(activity);
 }
 //退出栈中所有Activity
 public void popAllActivityExceptOne(Class cls){
  while(true){
   Activity activity=currentActivity();
   if(activity==null){
    break;
   }
   if(activity.getClass().equals(cls) ){
    break;
   }
   popActivity(activity);
  }
 }
}



android 完全退出应用程序实现代码

android退出应用程序会调用android.os.Process.killProcess(android.os.Process.myPid())或是System.exit(0),这只是针对第一个Activity(也就是入口的Activity)时生效。如果有A,B,C三个Activity,而想在B或C中Activity退出,调用上面的方法,往往会销毁当前的Activity返回上一个Activity。当然也可以逐个返回上一个Activity,直到跳转到入口的Activity,最后退出应用程序。但这样比较麻烦,而且逐个返回的体验并不友好。

网上比较流行的方法是定义栈,写一个ExitApplication类,利用单例模式管理Activity,在每个在Activity的onCreate()方法中调用ExitApplication.getInstance().addActivity(this)方法,在退出时调用ExitApplication.getInstance().exit()方法,就可以完全退出应用程序了。
ExitApplication类

import java.util.LinkedList;
import java.util.List;

import android.app.Activity;
import android.app.Application;

public class ExitApplication extends Application {

 private List activityList = new LinkedList();
 private static ExitApplication instance;

 private ExitApplication()
 {
 }
 //单例模式中获取唯一的ExitApplication实例
 public static ExitApplication getInstance()
 {
 if(null == instance)
 {
 instance = new ExitApplication();
 }
 return instance;

 }
 //添加Activity到容器中
 public void addActivity(Activity activity)
 {
 activityList.add(activity);
 }
 //遍历所有Activity并finish

 public void exit()
 {

 for(Activity activity:activityList)
 {
 activity.finish();
 }

 System.exit(0);

 }
 }

 下面的三个类IndexActivity, BActivity,CActivity是简单的例子,分别是IndexActivity?>BActivity?>CActivity的跳转顺序。在每个Activity类中onCreate()方法中调用ExitApplication.getInstance().addActivity(Activity activity)方法。在任何一个Activity界面退出应用程序时,只要调用ExitApplication.getInstance().exit()方法,就可以在任何一个Activity中完全退出应用程序。
IndexActivity 类源代码:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class IndexActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button next=(Button)findViewById(R.id.next_to_b);
        next.setOnClickListener(nextClick);

        Button exit=(Button)findViewById(R.id.exit_main);
        exit.setOnClickListener(exitClick);
        ExitApplication.getInstance().addActivity(this);

    }

    OnClickListener nextClick=new OnClickListener() {

  @Override
  public void onClick(View v) {
   // TODO Auto-generated method stub

   Intent intent=new Intent(IndexActivity.this,BActivity.class);
   startActivity(intent);

  }
 };

    OnClickListener exitClick=new OnClickListener() {

  @Override
  public void onClick(View v) {
   // TODO Auto-generated method stub
   ExitApplication.getInstance().exit();
  }
 };
}

BActivity 类源代码:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class BActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);

setContentView(R.layout.b);
Button next_to_c=(Button)findViewById(R.id.next_to_c);
next_to_c.setOnClickListener(next_to_cClick);

Button exit_b=(Button)findViewById(R.id.exit_b);
exit_b.setOnClickListener(exitClick);
ExitApplication.getInstance().addActivity(this);

}

OnClickListener next_to_cClick=new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

Intent intent=new Intent(BActivity.this,CActivity.class);
startActivity(intent);

}
};

OnClickListener exitClick=new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
ExitApplication.getInstance().exit();
}
};
}

CActivity 类源代码:

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class CActivity extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);

setContentView(R.layout.c);

Button exit_c=(Button)findViewById(R.id.exit_c);
exit_c.setOnClickListener(exitClick);
ExitApplication.getInstance().addActivity(this);

}

OnClickListener exitClick=new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
ExitApplication.getInstance().exit();
//如果只是调用以下其中的一个方法,并不会完全退出应用
//android.os.Process.killProcess(android.os.Process.myPid());
//System.exit(0);
}
};
}

本文我们来讲讲在eclipse开发工具中将android工程生成可安装的apk文件的图文步骤教程,学习android开发的朋友可以参考一下。

eclipse生成andoid安装文件apk的图文步骤如下

1.)生成keystore

按照下面的命令行 在C:\Program Files\Java\jdk1.6.0_10\bin>目录下,输入keytool -genkey -alias android.keystore -keyalg RSA -validity 100000 -keystore android.keystore

参数意义:-validity主要是证书的有效期,写100000天;空格,退格键 都算密码。

命令执行后会在C:\Program Files\Java\jdk1.6.0_10\bin>目录下生成 android.keystore文件。如图-1

 

\

图-1命令行下生成android.keystore

2.)eclipse生成apk文件

选择要打包的项目,右键点击–>Android tools–>Export Signed Application Package…如图-2

 

\

图-2 eclipse 打包工具

接下来的步骤就是不断的next。下面仅贴出图片,不解释。

 

\

step 2:选择打包的项目

 

\

step 3: 选择生成的android.keystore文件并输入密码

 

\

step 4:选择alias key并输入密码

 

\

step 5:最后选择生成android apk文件的目录及文件名

 

\

最终生成的apk文件

Android应用项目有时为了方便需要调用第三方文件或者库,本文我们来讲讲如何在Android NDK中调用第三方库文件(.so),及Android JNI找不到第三方库的解决方案。

如何在Android NDK中调用第三方库文件(.so)



1.在project/jni目录下创建prebuilt子目录(目录名可自定义).

2.将第三方.so放到prebuilt中,并创建Android.mk, 内容如下:

    LOCAL_PATH := $(call my-dir)

    include $(CLEAR_VARS)

    LOCAL_MODULE := xxx

    LOCAL_SRC_FILES := libxxx.so

    include $(PREBUILT_SHARED_LIBRARY)

3.在project/jni/Android.mk中加入

    LOCAL_SHARED_LIBRARIES := xxx

4.在project/jni/android.mk的最后加入

    include $(LOCAL_PATH)/prebuilt/Android.mk

5.运行cygwin, 到project目录下, 运行$NDK/ndk-build




Android JNI找不到第三方库的解决方案 cannot load library



    最近做一个jni项目,拿到的so库需要用jni封装一层,等于是在jni的C++代码里调用第三方库的方法,然后整个项目在Android上运行出结果。

    自己用jni生成的so是libaa.so 使用的第三方库是libbb.so。

    到目前为止,遇到的问题是libbb各种找不到。libbb库去哪儿了?

     

    E/AndroidRuntime(11626): Caused by: java.lang.UnsatisfiedLinkError:
    Cannot load library: soinfo_link_image(linker.cpp:1640):
    could not load library libbb.so needed by libaa.so;

    caused by load_library(linker.cpp:750): library libbb.so not found

     

    以上错误是在运行阶段发生的,事实上编译阶段也发生过找不到第三方的问题,表现就是库里实现的方法undefined。

    分两方面解决

     

    1,编译阶段找不到库,需要修改MK文件。

    1.libbb.so放在jni/prebuilt文件夹(自己新建),同时把Android.mk复制一份到prebuilt下。

    2.libbb.so的mk如下:
    LOCAL_PATH := $(call my-dir)
    include $(CLEAR_VARS)
    LOCAL_MODULE := bb
    LOCAL_SRC_FILES := libbb.so
    include $(PREBUILT_SHARED_LIBRARY)
    (<Dream>如果第三方提供的是.so文件则无须前面两个步骤)

    3.libaa.so的mk文件需要引入上面的mk。
    LOCAL_PATH := $(call my-dir)
     include $(CLEAR_VARS)
     LOCAL_MODULE    := aa
    LOCAL_SRC_FILES := aa.cpp
    LOCAL_LDLIBS := -llog
     LOCAL_SHARED_LIBRARIES := bb
    include $(BUILD_SHARED_LIBRARY)
    include $(LOCAL_PATH)/prebuilt/Android.mk
    (<Dream>可以静态链接,这样只产生一个.so,做法如下)
    Android.mak
    include $(BUILD_STATIC_LIBRARY)
    Application.mak
    APP_MODULES:=aa

    这样在编译阶段就可以连接到第三方库咯。

    2.运行阶段找不到库

    在运行阶段找不到库就是Android的事情了。后来发现是load库的顺序(默哀一个,破顺序。。)。

     
    static
        {
            System.loadLibrary(bb);
            System.loadLibrary(aa);
        }
    (<Dream>静态链接,这样就不需要load两个了库)
    先load第三方库,再load自己的库,因为aa库要用bb库里的方法,是依赖于bb库的,所以要先load。。

    这样在运行阶段也可以找到库咯。

本人在设置android桌面背景图片适应屏幕大小时,出现了点小问题,不过后来在网上整理了两个办法可以实现,现在分享出来。

android 设置桌面背景图片适应屏幕大小

今天设置桌面每天自动更新背景,但是桌面的背景都是被系统裁剪过的图片,后来找了这个过时的方法,改进后果然有用了!

              Bitmap bmp=BitmapFactory.decodeResource
              (getResources(), bg[DailyBg]);
              try
              {
              //  super.setWallpaper(bmp);
                  WallpaperManager instance = WallpaperManager.getInstance(ChangeBgImage.this);
//                  int desiredMinimumWidth = getWindowManager().getDefaultDisplay().getHeight(); //方法已经过时
//                  int desiredMinimumHeight = getWindowManager().getDefaultDisplay().getHeight();//方法已经过时
                  DisplayMetrics dm = new DisplayMetrics();
                  getWindowManager().getDefaultDisplay().getMetrics(dm);
                  int desiredMinimumWidth = dm.widthPixels;
                  int desiredMinimumHeight = dm.heightPixels;
                  Log.v("ss",""+desiredMinimumWidth);
                  Log.v("ss",""+desiredMinimumHeight);
                  instance.suggestDesiredDimensions(desiredMinimumWidth, desiredMinimumHeight);
                  instance.setBitmap(bmp);
                  Toast.makeText(ChangeBgImage.this,"壁纸设置成功",Toast.LENGTH_SHORT).show();
              }
              catch (IOException e)
              {
                e.printStackTrace();
              }
            }

  就是在获取屏幕大小的地方老方法已经被注释了,用了新的方法获取了屏幕的大小。

对了还要在清单文件里将权限加上,这点很重要,我找了半天才发现,suggestDesiredDimensions方法需要加权限

    <uses-permission android:name="android.permission.SET_WALLPAPER_HINTS"/>

  好了 ,菜鸟大功告成


Android设置桌面背景图片的方法


1.设置桌面背景图片的方法


    Resources res=getResources();     
    BitmapDrawable bmpDraw=(BitmapDrawable)res.getDrawable(R.drawable.icon);      
    Bitmap bmp=bmpDraw.getBitmap();   
    try{  
        setWallpaper(bmp);  
    }catch(IOException e) {  
        e.printStackTrace();  
    }  

 

2.在manifest中增加设置桌面的权限

[xhtml] view plaincopy

    <uses-permission android:name="android.permission.SET_WALLPAPER" />

很多Android应用喜欢用圆角边框布局,本文我们来介绍实现Android布局的两种方法,一个drawable-mdpi,一个用Shape。

方法一 使用 drawable-mdpi


设置边框圆角可以在drawable-mdpi目录里定义一个xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">  
    <solid android:color="#000000" />  
    <corners android:topLeftRadius="10dp"
                    android:topRightRadius="10dp"  
                android:bottomRightRadius="10dp"
                android:bottomLeftRadius="10dp"/>  
</shape>

解释:solid的表示填充颜色,为了简单,这里用的是黑色。
而corners则是表示圆角,注意的是这里bottomRightRadius是左下角而不是右下角,bottomLeftRadius右下角。
当然上面的效果也可以像下面一样设置,如下:

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



如果想引用这个xml,只需要@drawable/corners_bg.xml即可:

android:background="@drawable/corners_bg"



最后main.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" android:background="#FFFFFF">
    <RelativeLayout android:id="@+id/login_div"
        android:layout_width="fill_parent" android:layout_height="150dip"
        android:padding="15dip" android:layout_margin="15dip"
        android:background="@drawable/corners_bg">
    </RelativeLayout>
</LinearLayout>


方法二 Android使用 Shape 画边框线

 

1、布局


    <?xml version="1.0" encoding="utf-8"?>    
    <LinearLayout xmlns:Android="http://schemas.android.com/apk/res/android"    
        android:layout_width="fill_parent"    
        android:layout_height="fill_parent"    
        android:background="#FFFFFF"    
        android:orientation="vertical" >    
         
        <!-- 表格布局 -->    
        <TableLayout    
            android:layout_width="fill_parent"    
            android:layout_height="wrap_content"    
            android:padding="10dip" >    
            <!-- 表格布局:第一行 -->    
            <TableRow    
                android:layout_width="fill_parent"    
                android:layout_height="wrap_content"    
                android:background="@drawable/shape_top_corner_no_bottom_line"    
                android:padding="10dip" >    
                <TextView    
                    android:layout_width="wrap_content"    
                    android:layout_height="wrap_content"    
                    android:layout_gravity="center_vertical"    
                    android:layout_marginRight="10dip"    
                    android:text="姓名:" >    
                </TextView>    
                <EditText    
                    android:id="@+id/bankingYourNameEditText"    
                    android:layout_width="wrap_content"    
                    android:layout_height="wrap_content"    
                    android:layout_gravity="center_vertical"    
                    android:layout_weight="1"    
                    android:background="@null"    
                    android:singleLine="true" >    
                </EditText>    
            </TableRow>    
            <!-- 表格布局:第二行 -->    
            <TableRow    
                android:layout_width="fill_parent"    
                android:layout_height="wrap_content"    
                android:background="@drawable/shape_no_corner_without_bottom"    
                android:padding="10dip" >    
                <TextView    
                    android:layout_width="wrap_content"    
                    android:layout_height="wrap_content"    
                    android:layout_gravity="center_vertical"    
                    android:layout_marginRight="10dip"    
                    android:text="联系电话:" >    
                </TextView>    
                <EditText    
                    android:id="@+id/bankingContactTelEditText"    
                    android:layout_width="wrap_content"    
                    android:layout_height="wrap_content"    
                    android:layout_gravity="center_vertical"    
                    android:layout_weight="1"    
                    android:background="@null"    
                    android:inputType="phone"    
                    android:singleLine="true" >    
                </EditText>    
            </TableRow>    
            <!-- 表格布局:第三行 -->    
            <TableRow    
                android:layout_width="fill_parent"    
                android:layout_height="wrap_content"    
                android:background="@drawable/shape_bottom_corner_no_top_line"    
                android:padding="10dip" >    
                <TextView    
                    android:layout_width="wrap_content"    
                    android:layout_height="wrap_content"    
                    android:layout_gravity="center_vertical"    
                    android:layout_marginRight="10dip"    
                    android:text="联系电话:" >    
                </TextView>    
                <EditText    
                    android:id="@+id/bankingContactTelEditText"    
                    android:layout_width="wrap_content"    
                    android:layout_height="wrap_content"    
                    android:layout_gravity="center_vertical"    
                    android:layout_weight="1"    
                    android:background="@null"    
                    android:inputType="phone"    
                    android:singleLine="true" >    
                </EditText>    
            </TableRow>    
        </TableLayout>    
         
        <Button    
            android:id="@+id/button1"    
            android:layout_width="wrap_content"    
            android:layout_height="wrap_content"    
            android:layout_gravity="center"    
            android:text="Button" />    
         
    </LinearLayout>    

 

 

2、表格布局中每个TableRow表示一行,TableRow中的每个基本控件都是一列,这是一个三行两列的布局

这里的表格背景是自定义的shape,下面分别看一下三个shape的代码。

shape_top_corner_no_bottom_line.xml文件:顶部带圆角 白色背景 灰色边框 无下边框 长方体


    <?xml version="1.0" encoding="UTF-8"?>    
    <!-- 顶部带圆角 白色背景 灰色边框 无下边框 长方体 -->    
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">    
        <item>    
            <shape>    
                <solid android:color="#FFFFFF" />    
                <corners android:topLeftRadius="10dp" android:topRightRadius="10dp"    
                    android:bottomRightRadius="0.1dp" android:bottomLeftRadius="0.1dp" />    
                <stroke android:width="1dp" android:color="#ffa8abad" />    
            </shape>    
        </item>    
        <item android:top="1dp" android:left="1dp" android:right="1dp">    
            <shape>    
                <solid android:color="#FFFFFF" />    
                <corners android:topLeftRadius="10dp" android:topRightRadius="10dp"    
                    android:bottomRightRadius="0.1dp" android:bottomLeftRadius="0.1dp" />    
                <stroke android:width="1dp" android:color="#ffffffff" />    
            </shape>    
        </item>    
    </layer-list>    

 

3、shape_no_corner_without_bottom.xml文件:不带圆角 白色背景 灰色边框 无下边框 长方体


    <?xml version="1.0" encoding="UTF-8"?>    
    <!-- 不带圆角 白色背景 灰色边框 无下边框 长方体 -->    
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >    
        <item>    
            <shape>    
                <solid android:color="#FFFFFF" />    
                <stroke    
                    android:width="1dp"    
                    android:color="#ffa8abad" />    
            </shape>    
        </item>    
        <item    
            android:left="1dp"    
            android:right="1dp"    
            android:top="1dp">    
            <shape>    
                <solid android:color="#FFFFFF" />    
                <stroke    
                    android:width="1dp"    
                    android:color="#ffffffff" />    
            </shape>    
        </item>    
    </layer-list>    

 

4、shape_bottom_corner_no_top_line.xml文件:底部圆角 白色背景 灰色边框 长方体

    <?xml version="1.0" encoding="UTF-8"?>    
    <!-- 底部圆角 白色背景 灰色边框 长方体 -->    
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">    
        <item>    
            <shape>    
                <solid android:color="#FFFFFF" />    
                <corners android:topLeftRadius="0.1dp" android:topRightRadius="0.1dp"    
                    android:bottomRightRadius="10dp" android:bottomLeftRadius="10dp" />    
                <stroke android:width="1dp" android:color="#ffa8abad" />    
            </shape>    
        </item>    
        <item android:top="1dp" android:bottom="1dp" android:left="1dp" android:right="1dp">    
            <shape>    
                <solid android:color="#FFFFFF" />    
                <corners android:topLeftRadius="0.1dp" android:topRightRadius="0.1dp"    
                    android:bottomRightRadius="10dp" android:bottomLeftRadius="10dp" />    
                <stroke android:width="1dp" android:color="#ffffffff" />    
            </shape>    
        </item>    
    </layer-list>   

 

5、说明:

     shape_top_corner_no_bottom_line.xml

     shape_no_corner_without_bottom.xml

     shape_bottom_corner_no_top_line.xml

     以上三个文件都存放在 drawable 中。

 

6、效果图查看附件。

aad62a42-4d97-3c2a-ba4e-cecda9f4eaae.jpg

[!--infotagslink--]

相关文章

  • C#开发Windows窗体应用程序的简单操作步骤

    这篇文章主要介绍了C#开发Windows窗体应用程序的简单操作步骤,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-04-12
  • Android子控件超出父控件的范围显示出来方法

    下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
  • 不打开网页直接查看网站的源代码

      有一种方法,可以不打开网站而直接查看到这个网站的源代码..   这样可以有效地防止误入恶意网站...   在浏览器地址栏输入:   view-source:http://...2016-09-20
  • php 调用goolge地图代码

    <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
  • JS基于Mootools实现的个性菜单效果代码

    本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
  • JS+CSS实现分类动态选择及移动功能效果代码

    本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
  • JS实现自定义简单网页软键盘效果代码

    本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
  • php 取除连续空格与换行代码

    php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
  • php简单用户登陆程序代码

    php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p>&nbsp;</p> <p>&nbsp;</p> <form name="form1...2016-11-25
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • PHP实现清除wordpress里恶意代码

    公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
  • Android模拟器上模拟来电和短信配置

    如果我们的项目需要做来电及短信的功能,那么我们就得在Android模拟器开发这些功能,本来就来告诉我们如何在Android模拟器上模拟来电及来短信的功能。 在Android模拟...2016-09-20
  • 夜神android模拟器设置代理的方法

    夜神android模拟器如何设置代理呢?对于这个问题其实操作起来是非常的简单,下面小编来为各位详细介绍夜神android模拟器设置代理的方法,希望例子能够帮助到各位。 app...2016-09-20
  • JS实现双击屏幕滚动效果代码

    本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
  • android自定义动态设置Button样式【很常用】

    为了增强android应用的用户体验,我们可以在一些Button按钮上自定义动态的设置一些样式,比如交互时改变字体、颜色、背景图等。 今天来看一个通过重写Button来动态实...2016-09-20
  • js识别uc浏览器的代码

    其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
  • Android WebView加载html5页面实例教程

    如果我们要在Android应用APP中加载html5页面,我们可以使用WebView,本文我们分享两个WebView加载html5页面实例应用。 实例一:WebView加载html5实现炫酷引导页面大多...2016-09-20
  • JS日期加减,日期运算代码

    一、日期减去天数等于第二个日期function cc(dd,dadd){//可以加上错误处理var a = new Date(dd)a = a.valueOf()a = a - dadd * 24 * 60 * 60 * 1000a = new Date(a)alert(a.getFullYear() + "年" + (a.getMonth() +...2015-11-08
  • 深入理解Android中View和ViewGroup

    深入理解Android中View和ViewGroup从组成架构上看,似乎ViewGroup在View之上,View需要继承ViewGroup,但实际上不是这样的。View是基类,ViewGroup是它的子类。本教程我们深...2016-09-20
  • PHP开发微信支付的代码分享

    微信支付,即便交了保证金,你还是处理测试阶段,不能正式发布。必须到你通过程序测试提交订单、发货通知等数据到微信的系统中,才能申请发布。然后,因为在微信中是通过JS方式调用API,必须在微信后台设置支付授权目录,而且要到...2014-05-31