三星I879怎么卡刷?I879刷机教程详解

 更新时间:2016年9月20日 19:59  点击:2020
三星I879的刷机教程也分享一下了,这个刷机教程是采用卡刷的方式,这个卡刷教程主要就是来刷第三方包的,因为之前也有人在刷第三方包,可是就是不知道怎么进行详细的刷机操作,下面就来给大家分享一下详细的卡刷步骤了,如果你也想刷机的话可以一起来看看详细的刷机步骤吧:
一:三星I879刷机前的准备工作:
1:下载rom刷机包,点,这里提供的有相关的卡刷包,如果你的手里已经有rom卡刷包了也可以,下载其它地方的rom包也可以,只要是支持卡刷的就行,因为所有的卡刷包的刷机方法是一样的。
2:确保手机能用usb数据线正常的连接电脑,连接电脑是为了把上面下载的rom刷机包复制到手机的sd卡里
3:因为是卡刷,所以手机里必须先要刷入第三方的recovery才可以,如果你的手机里还没有刷入第三方的recovery的话,点击这里查看详细的刷入recovery的教程>>>> 
二:三星I879卡刷刷机的操作:
1:手机用usb数据线连接上电脑之后,把上面下载下来的zip格式的rom刷机包复制到手机的sd卡的根目录下方便找到。
2:手机先关机,然后手机在关机状态下按住手机的音量上键 + Home键 + 电源键(两键一起按),一会就会进入recovery界面了。
 
 
3:进入recovery界面之后先进行双清,(按音量键表示选择,按开机键表示确认),依次执行
 
三星I879卡刷刷机教程(图文)

三星I879卡刷刷机教程(图文)
 
wipe data/factory reset——Yes——delete all user data
 
三星I879卡刷刷机教程(图文)

三星I879卡刷刷机教程(图文)
 
wipe cache partition——Yes-Wipe Cache
4:双清之后按音量键选择install zip from sdcard,然后再选择choose zip from sdcard,然后找到刚才放到手机sd卡里zip格式的rom刷机包 XXXX.zip,然后按音量键选中,然后按电源键确认,接着选中 Yes-install XXXXX.zip并确认开始刷机...
 
三星I879卡刷刷机教程(图文)

三星I879卡刷刷机教程(图文)

三星I879卡刷刷机教程(图文)

三星I879卡刷刷机教程(图文)
 
5:等待刷机完成,刷完之后返回到recovery主界面,然后选择reboot system now 重启手机就可以了。
 
三星I879卡刷刷机教程(图文)
 
6:刷机完成。

 

在android开发过程中,APP需要用到摄像头录制视频音效、播放视频的功能,并且通过第三方线程调用Handler动态的addview和removeview添加和删除播放视频的组件——MediaPlayer。

一、产生异常原因

每次在点播放按钮的时候,打开MediaPlayer的SurfaceView进行播放,再次点击则删除波翻组件,停止播放,这个过程中会遇到The surface has been released 错误,这个的原因是因为:在播放this.mediaPlayer.start()之前SurfaceView没有来的及调用onCreate()或者onChange()方法,导致holder没有成功加载,所以在start播放的时候抛出播放异常。

二、解决办法

很简单的办法就是:
1.设置一个boolean标志位isSurfaveCreated,在执行onCreate()或者onChange()之后,将isSurfaveCreated=true。
2.在停止播放之后isSurfaveCreated=false。
3.在MediaPlayer.setDisplay()之前使用while循环以及Thread.sleep(10)来循环检测isSurfaveCreated,只有isSurfaveCreated为true的时候,才继续执行,具体代码为:

 代码如下 复制代码
while (! this.isSurfaveCreated) {
    try {
        Thread.sleep(10);
    } catch (InterruptedException e) {
    // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

当然,这个办法自己感觉是一个非主流的办法,但是确实可以很好的避免这个问题,除此之外,大家自己考虑代码的安全稳定性等等因素,Enjoy~

本文明来给各位同学介绍一下关于cordova cteate app 时下载失败无法成功创建的解决方法,有碰到此问题的同学可进入参考。

使用如下语句创建一个cordova应用:

 代码如下 复制代码
cordova -d create lzwmeapp com.lzw.lzwmeapp lzwmeapp

但是无法成功创建,提示错误如下:

 代码如下 复制代码
E:lzwme_app_android>cordova -d create lzwmeapp
Creating a new cordova project with name “HelloCordova” and id “io.cordova.hello
cordova” at location “E:lzwme_app_androidlzwmeapp”
Using stock cordova hello-world application.
Requesting {“uri”:”https://git-wip-us.apache.org/repos/asf?p=cordova-app-hello-w
orld.git;a=snapshot;h=3.4.0;sf=tgz”}…
Downloading cordova library for www…
Error: connect ETIMEDOUT
at errnoException (net.js:904:11)
at Object.afterConnect [as oncomplete] (net.js:895:19)

明显这是下载 cordova hello world 文件失败。主要原因为网址 https://git-wip-us.apache.org/ 速度太慢,容易超时。
解决方法:
我们可以变更这个文件的下载地址,方法如下:
打开 cordova 目录下的platforms.js文件,修改其中的url配置地址。这里可以修改为git附件包下载地址,具体到官方github查找:
https://github.com/apache/
如这里主要修改了如下部分代码:

 代码如下 复制代码
‘android’ : {
parser : ‘./src/metadata/android_parser’,
//url : ‘https://git-wip-us.apache.org/repos/asf?p=cordova-android.git’,
url : ‘https://github.com/apache/cordova-android/archive/3.4.0.tar.gz?’,
version: ’3.4.0′
},
‘www’:{
hostos : [],
//url : ‘https://git-wip-us.apache.org/repos/asf?p=cordova-app-hello-world.git’,
url : ‘https://github.com/apache/cordova-app-hello-world/archive/3.4.0.tar.gz?’,
version: ’3.4.0′
}

其他部分的url也可参照修改。
当然,你也可以手动下载对应的压缩包,放到本地服务器,然后修改为相应文件的下载地址。

下面来看一篇关于Android生成商品条形码的例子,这个生成是利用了EAN-13方式来生成了,代码与生成例子都在文章下面有大家可测试一下。

简介
商品条码,或者EAN是欧洲标准条码。该条码被作为商品和商品制造商的唯一标识,同时,是美国标准UPC的超集。EAN-13由前十二位数字和第十三位作为校验位的数字组成。其中第十三位数字由前十二位数字按照一定公式计算得出。
如今,各个领域都有条码的应用。如果你以写代码为生,你的程序需要支持条码是早晚的事儿。比如超市的会员打折系统,用户以手机获取的条码作为唯一标识,来获得折扣。又比如支付系统中的星巴克支付系统。本文中,我们将讨论如何在安卓系统中生成EAN-13条码。


EAN-13计算基础

EAN-13采用的是是各位商品码,第十三位作为校验位。该校验位有前十二位数字生成。生成校验位的算法如下(数据从左到右计数):
P1 = 偶数位的数字和
P2 = 奇数位的数字和
Z = P1 + 3 * P2
R = 取个位数作为Z值
校验位 = R - Z
下面我们看一下EAN-13的编码结构:
首位不参与计算
随后六位根据首位数字编码
末六位以下列规则转换
首位 左六位 右六位
0 LLLLLL RRRRRR
1 LLGLGG RRRRRR
2 LLGGLG RRRRRR
3 LLGGGL RRRRRR
4 LGLLGG RRRRRR
5 LGGLLG RRRRRR
6 LGGGLL RRRRRR
7 LGLGLG RRRRRR
8 LGLGGL RRRRRR
9 LGGLGL RRRRRR
位编码:
Digit L - code G - code R - code
0 0001101 0100111 1110010
1 0011001 0110011 1100110
2 0010011 0011011 1101100
3 0111101 0100001 1000010
4 0100011 0011101 1011100
5 0110001 0111001 1001110
6 0101111 0000101 1010000
7 0111011 0010001 1000100
8 0110111 0001001 1001000
9 0001011 0010111 1110100
应用
文章尾部,我贴出了一个用十二位数字生成EAN-13条码的类EAN13CodeBuilder。这个类可以把生成的十三位数字的每一位都替换为可以展示到屏幕的特殊字体。该字体包括了一些特殊字符,比如$,+,!和其如上所述的十个数字的编码L,R,G。在EAN-13条码必须以以下方式生成:起始界定符(取决于第一位数字)-左六位-中间分隔符-右六位-终止符(!)
Digit L - code G - code R -code Start delimiter
0 0 A a #!
1 1 B b $!
2 2 C c %!
3 3 D d &!
4 4 E e '!
5 5 F f (!
6 6 G g )!
7 7 H h *!
8 8 I i +!
9 9 J j ,!
我们需要做的,仅仅是用数字生成正确的字符串,并用特殊字体展示而已。
这个类的使用非常简单。它将原始字符串传递给构造函数,之后调用getcode()方法取回EAN-13条码。这个类的源代码如下:
 

 代码如下 复制代码
public class EAN13CodeBuilder {
    private String codeStringValue;
    private String generatedCode;
 
    public EAN13CodeBuilder(String codeString)
    {
        codeStringValue = codeString;
        parse();
    }
 
    public String getCode()
    {
        return generatedCode;
 
    }
 
    ////////////////////////////////////////////////////////////////
    // this method generates EAN 13 control number ans returns full 
    // string to encode
    private String getFullCode()
    {
        
       int chetVal = 0, nechetVal = 0;
       String codeToParse = codeStringValue;
 
       for( int index = 0;index<6;index++ )
       {
          chetVal += Integer.valueOf(codeToParse.substring(
                                     index*2+1,index*2+2)).intValue();
          nechetVal += Integer.valueOf(codeToParse.substring(
                                       index*2,index*2+1)).intValue();
       }
 
       chetVal *= 3;
       int controlNumber = 10 - (chetVal+nechetVal)%10;
       if( controlNumber == 10 ) controlNumber  = 0;
 
       codeToParse += String.valueOf(controlNumber);
 
       return codeToParse;
 
    }
 
    private String DigitToUpperCase( String digit)
    {
       String letters  = "ABCDEFGHIJ";
       int position = Integer.valueOf(digit).intValue();
 
       String retVal = letters.substring(position,position+1);
 
       return retVal;
 
    }
 
    private String DigitToLowerCase( String digit)
    {
       String letters  = "abcdefghij";
       int position = Integer.valueOf(digit).intValue();
 
       String retVal = letters.substring(position,position+1);
 
       return retVal;
 
    }
    //////////////////////////////////////////////
    // this method generates EAN 13 encoded string
    // algorithm can be found at http://en.wikipedia.org/wiki/EAN-13
    private String createEAN13Code(String rawCode)
    {
         int firstFlag = Integer.valueOf(
 
                rawCode.substring(0,1)
 
         ).intValue();
 
         String leftString = rawCode.substring(1,7);
         String rightString = rawCode.substring(7);
 
         String rightCode = "";
         String leftCode = "";
 
         for( int i=0;i<6;i++)
         {
           rightCode += DigitToLowerCase( rightString.substring(i,i+1) );
         }
 
 
 
         if( firstFlag == 0 )
         {
            leftCode = "#!"+leftString.substring(0,1)
                           +leftString.substring(1,2)
                           +leftString.substring(2,3)
                           +leftString.substring(3,4)
                           +leftString.substring(4,5)
                           +leftString.substring(5);
         }
         if( firstFlag == 1 )
         {
             
            leftCode = "$!"+leftString.substring(0,1)
                           +leftString.substring(1,2)
                           +DigitToUpperCase(leftString.substring(2,3))
                           +leftString.substring(3,4)
                           +DigitToUpperCase(leftString.substring(4,5))
                           +DigitToUpperCase(leftString.substring(5));
         }
         if( firstFlag == 2 )
         {
            leftCode = "%!"+leftString.substring(0,1)
                           +leftString.substring(1,2)
                           +DigitToUpperCase(leftString.substring(2,3))
                           +DigitToUpperCase(leftString.substring(3,4))
                           +leftString.substring(4,5)
                           +DigitToUpperCase(leftString.substring(5));
         }
         if( firstFlag == 3 )
         {
            leftCode = "&!"+leftString.substring(0,1)
                         +leftString.substring(1,2)
                         +DigitToUpperCase(leftString.substring(2,3))
                         +DigitToUpperCase(leftString.substring(3,4))
                         +DigitToUpperCase(leftString.substring(4,5))
                         +leftString.substring(5);
         }
         if( firstFlag == 4 )
         {
            leftCode = "'!"+leftString.substring(0,1)
                         +DigitToUpperCase(leftString.substring(1,2))
                         +leftString.substring(2,3)
                         +leftString.substring(3,4)
                         +DigitToUpperCase(leftString.substring(4,5))
                         +DigitToUpperCase(leftString.substring(5));
         }
         if( firstFlag == 5 )
         {
            leftCode = "(!"+leftString.substring(0,1)
                         +DigitToUpperCase(leftString.substring(1,2))
                         +DigitToUpperCase(leftString.substring(2,3))
                         +leftString.substring(3,4)
                         +leftString.substring(4,5)
                         +DigitToUpperCase(leftString.substring(5));
         }
         if( firstFlag == 6 )
         {
            leftCode = ")!"+leftString.substring(0,1)
                           +DigitToUpperCase(leftString.substring(1,2))
                           +DigitToUpperCase(leftString.substring(2,3))
                           +DigitToUpperCase(leftString.substring(3,4))
                           +leftString.substring(4,5)
                           +leftString.substring(5);
         }
         if( firstFlag == 7 )
         {
            leftCode = "*!"+leftString.substring(0,1)
                         +DigitToUpperCase(leftString.substring(1,2))
                         +leftString.substring(2,3)
                         +DigitToUpperCase(leftString.substring(3,4))
                         +leftString.substring(4,5)
                         +DigitToUpperCase(leftString.substring(5));
         }
         if( firstFlag == 8 )
         {
            leftCode = "+!"+leftString.substring(0,1)
                         +DigitToUpperCase(leftString.substring(1,2))
                         +leftString.substring(2,3)
                         +DigitToUpperCase(leftString.substring(3,4))
                         +DigitToUpperCase(leftString.substring(4,5))
                         +leftString.substring(5);
         }
         if( firstFlag == 9 )
         {
            leftCode = ",!"+leftString.substring(0,1)
                         +DigitToUpperCase(leftString.substring(1,2))
                         +DigitToUpperCase(leftString.substring(2,3))
                         +leftString.substring(3,4)
                         +DigitToUpperCase(leftString.substring(4,5))
                         +leftString.substring(5);
         }
 
 
 
         String retVal = leftCode + "-" + rightCode + "!";
 
         return retVal;
    }
 
    private void parse()
    {
       String fullString = getFullCode();
       System.out.println( "Full code: " + fullString );
 
       generatedCode = createEAN13Code(fullString);
 
       System.out.println( "Generated code: " + generatedCode );
 
    }
}

代码
为了生成一个在线条码,并将它展示到安卓屏幕上,你可能需要自己生成条码并用其中的特殊字符展示到屏幕上。为了在安卓系统的TextView  部件中设置字符集,你需要在工程文件的 /assets 下放置一个文件,加载Typeface 并且设置Typeface  到TextView 中:

 代码如下 复制代码

import android.app.Activity;
import android.os.Bundle;
 
import android.view.View;
import android.widget.TextView;
import android.graphics.Typeface;
 
public class AndroidEAN13Activity extends Activity {
 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        // ToDo add your GUI initialization code here
 
        this.setContentView(R.layout.main);
        TextView t = (TextView)findViewById(R.id.barcode);
 
        // set barcode font for TextView.
        // ttf file must be placed is assets/fonts 
        Typeface font = Typeface.createFromAsset(this.getAssets(), 
                        "fonts/EanP72Tt Normal.Ttf");
        t.setTypeface(font);
 
        // generate barcode string      
        EAN13CodeBuilder bb = new EAN13CodeBuilder("124958761310");
        t.setText(bb.getCode());
    }
}

学完了Java(虽说没怎么练手),开始学Android编程。首先还是做个计算器(感觉这辈子只能做计算器了 话说Android的布局真是太方便了,下面是布局文件

例子

 代码如下 复制代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/warpcontent"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <HorizontalScrollView
        android:id="@+id/scrollview"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">

        <TextView
            android:id="@+id/resultText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:gravity="right"
            android:padding="8dp"
            android:paddingLeft="10dp"
            android:paddingRight="10dp"
            android:text="@string/number0"
            android:textSize="40sp" />
    </HorizontalScrollView >

    <TableLayout
        android:id="@+id/buttonTable"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:stretchColumns="*" >

        <TableRow
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="1" >

            <Button
                android:id="@+id/button7"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:onClick="onClickListener"
                android:text="@string/number7" />

            <Button
                android:id="@+id/button8"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:onClick="onClickListener"
                android:text="@string/number8" />

            <Button
                android:id="@+id/button9"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:onClick="onClickListener"
                android:text="@string/number9" />

            <Button
                android:id="@+id/buttonBackSpace"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:onClick="onClickListener"
                android:text="@string/backspace" />

            <Button
                android:id="@+id/buttonClear"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:onClick="onClickListener"
                android:text="@string/clear" />
        </TableRow>

        <TableRow
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="1" >

            <Button
                android:id="@+id/button4"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:onClick="onClickListener"
                android:text="@string/number4" />

            <Button
                android:id="@+id/button5"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:onClick="onClickListener"
                android:text="@string/number5" />

            <Button
                android:id="@+id/button6"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:onClick="onClickListener"
                android:text="@string/number6" />

            <Button
                android:id="@+id/buttonMultiply"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:onClick="onClickListener"
                android:text="@string/multiply" />

            <Button
                android:id="@+id/buttonDivide"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:onClick="onClickListener"
                android:text="@string/divide" />
        </TableRow>
    </TableLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal" >

        <TableLayout
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="3"
            android:stretchColumns="*" >

            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="0dp"
                android:layout_weight="1" >

                <Button
                    android:id="@+id/button1"
                    android:layout_width="wrap_content"
                    android:layout_height="fill_parent"
                    android:onClick="onClickListener"
                    android:text="@string/number1" />

                <Button
                    android:id="@+id/button2"
                    android:layout_width="wrap_content"
                    android:layout_height="fill_parent"
                    android:onClick="onClickListener"
                    android:text="@string/number2" />

                <Button
                    android:id="@+id/button3"
                    android:layout_width="wrap_content"
                    android:layout_height="fill_parent"
                    android:onClick="onClickListener"
                    android:text="@string/number3" />
            </TableRow>

            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="0dp"
                android:layout_weight="1" >

                <Button
                    android:id="@+id/button0"
                    android:layout_width="wrap_content"
                    android:layout_height="fill_parent"
                    android:onClick="onClickListener"
                    android:text="@string/number0" />

                <Button
                    android:id="@+id/buttonDot"
                    android:layout_width="wrap_content"
                    android:layout_height="fill_parent"
                    android:onClick="onClickListener"
                    android:text="@string/dot" />

                <Button
                    android:id="@+id/buttonNegSign"
                    android:layout_width="wrap_content"
                    android:layout_height="fill_parent"
                    android:onClick="onClickListener"
                    android:text="@string/negSign" />
            </TableRow>
        </TableLayout>

        <Button
            android:id="@+id/buttonPlus"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:onClick="onClickListener"
            android:text="@string/plus" />

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:orientation="vertical" >

            <Button
                android:id="@+id/buttonMinus"
                android:layout_width="fill_parent"
                android:layout_height="0dp"
                android:layout_weight="1"
                android:onClick="onClickListener"
                android:text="@string/minus" />

            <Button
                android:id="@+id/buttonEval"
                android:layout_width="fill_parent"
                android:layout_height="0dp"
                android:layout_weight="1"
                android:onClick="onClickListener"
                android:text="@string/eval" />
        </LinearLayout>
    </LinearLayout>

</LinearLayout>

MainActivity类和之前的java计算器差不多:

 代码如下 复制代码

package me.jerrys.calc;

import java.math.BigDecimal;

import android.support.v7.app.ActionBarActivity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity {
 private TextView textView;
 private BigDecimal lastNum = new BigDecimal("0");
 private BigDecimal currentNum = new BigDecimal("0");
 private String currentText;
 private boolean typeClean = false;
 private boolean hadCalced = false;
 private MODE currentMode = MODE.PLUS;
 private enum MODE {
  PLUS, MINUS, MULTIPLY, DIVIDE
 }
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  textView = (TextView) findViewById(R.id.resultText);
 }

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  getMenuInflater().inflate(R.menu.main, menu);
  return true;
 }

 public void onClickListener(View v) {
  currentText = textView.getText().toString();
  switch (v.getId()) {
  case R.id.button0:
   addNumber("0");
   break;
  case R.id.button1:
   addNumber("1");
   break;
  case R.id.button2:
   addNumber("2");
   break;
  case R.id.button3:
   addNumber("3");
   break;
  case R.id.button4:
   addNumber("4");
   break;
  case R.id.button5:
   addNumber("5");
   break;
  case R.id.button6:
   addNumber("6");
   break;
  case R.id.button7:
   addNumber("7");
   break;
  case R.id.button8:
   addNumber("8");
   break;
  case R.id.button9:
   addNumber("9");
   break;
  case R.id.buttonNegSign:
   addSign();
   break;
  case R.id.buttonClear:
   clear();
   break;
  case R.id.buttonBackSpace:
   backSpace();
   break;
  case R.id.buttonPlus:
   setMode(MODE.PLUS);
   break;
  case R.id.buttonMinus:
   setMode(MODE.MINUS);
   break;
  case R.id.buttonMultiply:
   setMode(MODE.MULTIPLY);
   break;
  case R.id.buttonDivide:
   setMode(MODE.DIVIDE);
   break;
  case R.id.buttonEval:
   calc();
   break;
  case R.id.buttonDot:
   addNumber(".");
   break;
  }
 }
 private void calc() {
  if (hadCalced && typeClean) return;
  currentNum = new BigDecimal(currentText);
  try {
   switch (currentMode) {
   case PLUS:
    lastNum = lastNum.add(currentNum);
    break;
   case MINUS:
    lastNum = lastNum.subtract(currentNum);
    break;
   case MULTIPLY:
    lastNum = lastNum.multiply(currentNum);
    break;
   case DIVIDE:
    lastNum = lastNum.divide(currentNum, 16,
      BigDecimal.ROUND_HALF_DOWN);
    break;
   }
  } catch (Exception e) {
   Toast.makeText(getApplicationContext(), "发生错误:"+e.getMessage(), Toast.LENGTH_SHORT).show();
   return;
  }
  String resultText = lastNum.toString();
  if (resultText.indexOf(".") > 0) { // 消除小数多余位数
   resultText = resultText.replaceAll("0+?$", "");
   resultText = resultText.replaceAll("[.]$", "");
  }
  setResultText(resultText);
  typeClean = true;
  hadCalced = false;
 }
 private void setMode(MODE mode) {
  if (!hadCalced && !typeClean) {
   calc();
   currentMode = mode;
   return;
  }
  lastNum = new BigDecimal(currentText);
  currentMode = mode;
  typeClean = true;
  hadCalced = true;
 }
 
 private void addSign() {
  if (currentText.equals("0") || currentText.equals("")) return;
  if (currentText.startsWith("-")) setResultText(currentText.substring(1));
  else setResultText("-" + currentText);
 }
 
 private void clear() {
  currentNum = new BigDecimal("0");
  lastNum = new BigDecimal("0");
  typeClean = false;
  currentMode = MODE.PLUS;
  setResultText("0");
 }
 
 private void setResultText(String string) {
  textView.setText(string);
 }

 public void addNumber(String num) {
  String resultText = currentText;
  if (typeClean == true) {
   resultText = "0";
   typeClean = false;
  }
  if (num.equals(".") && currentText.lastIndexOf(".") != -1) return;
  if ((resultText.equals("0") || resultText.equals(""))
    && !num.equals("."))
   resultText = "";
  resultText = resultText + num;
  setResultText(resultText);
 }
 
 private void backSpace() {
  if (currentText.equals("0") || currentText.equals("")) return;
  if (currentText.length() == 1) {
   setResultText("0");
   return;
  }
  setResultText(currentText.substring(0, currentText.length() - 1));
 }
 
 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
  if (item.getItemId() == R.id.action_about) {
   new AlertDialog.Builder(this).setTitle("关于").setMessage("【Android www.111cn.net简易计算器】n作者  JerryLocken博客  n源码  /android-simple-calc").setPositiveButton("确定", null).show();
   return true;
  }
  return super.onOptionsItemSelected(item);
 }
}


QQ截图20140423183332

[!--infotagslink--]

相关文章

  • Painter绘制红衣喝酒男水粉画效果教程

    今天小编在这里就来给Painter的这一款软件的使用者们来说一说绘制红衣喝酒男水粉画效果的教程,各位想知道具体绘制步骤的使用者,那么下面就快来跟着小编一起看一看教程...2016-09-14
  • iPhone6怎么激活?两种苹果iPhone6激活教程图文详解

    iPhone6新机需要激活后才可以正常使用,那么对于小白用户来说,iPhone6如何激活使用呢?针对此问题,本文就为大家分别介绍Wifi无线网络激活以及iPhone6连接电脑激活这两种有效的方法,希望本文能够帮助到大家...2022-09-14
  • Photoshop制作雨中野外孤独行走的一头牛海报教程

    今天小编在这里就来给各位photoshop的这一款软件的使用者们来说下制作雨中野外孤独行走的一头牛海报的教程,各位想知道具体制作方法的使用者们,大家就快来看一看小编给...2016-09-14
  • Painter绘制帅气卡通魔法王子漫画教程

    今天小编在这里就来给Painter的这一款软件的使用者们来说一下绘制帅气卡通魔法王子漫画的具体教程,各位想知道绘制步骤的使用者,那么下面就快来跟着小编一起看一看教程...2016-09-14
  • Illustrator鼠绘堆雪人的孩童矢量插画教程

    今天小编在这里就来给各位Illustrator的这一款软件的使用者们来说说鼠绘堆雪人的孩童矢量插画的教程,各位想知道具体绘制方法的使用者们,那么各位就快来跟着小编来看看...2016-09-14
  • 安卓手机app添加支付宝支付开发教程

    支付宝支付在国内算是大家了,我们到处都可以使用支付宝了,下文整理介绍的是在安卓app应用中使用支付宝进行支付的开发例子。 之前讲了一篇博客关与支付宝集成获取...2016-09-20
  • 美图秀秀给照片天空加蓝天白云教程一览

    今天小编在这里就来给美图秀秀的这一款软件的使用者们来说下究竟该怎么给照片天空加蓝天白云的教程,各位想知道具体制作步骤的,那么下面就来跟着小编一起看看吧。 ...2016-09-14
  • llustrator绘制扁平化风格卡通警察护士空姐肖像教程

    今天小编在这里就来给llustrator的这一款软件的使用者们来说一说绘制扁平化风格卡通警察护士空姐肖像的教程,各位想知道具体绘制步骤的使用者们,那么下面就快来跟着小编...2016-09-14
  • Illustrator绘制一个方形的录音机图标教程

    今天小编在这里就来给Illustrator的这一款软件的使用者们来说一下绘制一个方形的录音机图标的教程,各位想知道具体绘制方法的使用者们,那么下面就来看一下小编给大家分...2016-09-14
  • photoshop简单制作一个搞笑的换脸表情包教程

    今天小编在这里就来给photoshop的这一款软件的使用者们来说一说简单制作一个搞笑的换脸表情包的教程,各位想知道具体制作方法的使用者们,那么大家就快来看一看教程吧。...2016-09-14
  • photoshop给手绘画调色变换场景后期教程

    今天小编在这里就来给各位photoshop的这一款软件的使用者们来说说给手绘画调色变换场景的后期教程,各位想知道具体后期处理步骤的使用者们,那么大家就快来跟着小编来看...2016-10-02
  • 美图秀秀让你胸丰满起来处理教程

    今天小编在这里就来给美图秀秀的这一款软件的使用者们来说一下让你胸丰满起来的处理教程,各位想知道具体处理步骤的,那么下面就快来跟着小编一起看一下教程吧。 给...2016-09-14
  • Painter绘制雷神传插画教程

    今天小编在这里就来给Painter的这一款软件的使用者们来说一下绘制雷神传插画的教程,各位想知道具体绘制步骤的使用者,那么下面就快来跟着小编一起看看绘制方法吧。 ...2016-09-14
  • 美图秀秀制作隔离区聊天背景教程

    今天小编在这里就来给美图秀秀的这一款软件的使用者们来说下制作隔离区聊天背景的教程,各位想知道具体方法的,那么下面就快来跟着小编一起看一看吧。 给各位美图秀...2016-09-14
  • MySQL中的联合索引学习教程

    联合索引又叫复合索引。对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进...2015-11-24
  • Lua语言新手简单入门教程

    这篇文章主要给大家介绍的是关于Lua语言新手入门的简单教程,文中通过示例代码一步步介绍的非常详细,对各位新手们的入门提供了一个很方便的教程,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。...2020-06-30
  • MySQL日志分析软件mysqlsla的安装和使用教程

    一、下载 mysqlsla [root@localhost tmp]# wget http://hackmysql.com/scripts/mysqlsla-2.03.tar.gz--19:45:45-- http://hackmysql.com/scripts/mysqlsla-2.03.tar.gzResolving hackmysql.com... 64.13.232.157Conn...2015-11-24
  • golang 调用 php7详解及实例

    这篇文章主要介绍了golang 调用 php7详解及实例的相关资料,需要的朋友可以参考下...2017-01-15
  • photoshop素材合成古典园林场景制作教程

    今天小编在这里就来给photoshop的这一款软件的使用者们来说说用素材合成古典园林场景教程,各位想知道到底该怎么制作的,那么就快来一起看一下吧。 给各位photoshop...2016-09-14
  • php类的使用实例教程

    php类的使用实例教程 <?php /** * Class program for yinghua05-2 * designer :songsong */ class Template { var $tpl_vars; var $tpl_path; var $_deb...2016-11-25