posts - 93,  comments - 2,  trackbacks - 0
           
          java.lang.NullPointerException
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.widget.AbsListView.obtainView(AbsListView.java:2298)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.widget.ListView.measureHeightOfChildren(ListView.java:1263)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.widget.ListView.onMeasure(ListView.java:1175)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.view.View.measure(View.java:16515)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5169)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.view.View.measure(View.java:16515)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5169)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.view.View.measure(View.java:16515)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5169)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.view.View.measure(View.java:16515)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5169)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.view.View.measure(View.java:16515)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5169)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.view.View.measure(View.java:16515)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5169)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.view.View.measure(View.java:16515)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5169)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.view.View.measure(View.java:16515)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5169)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.view.View.measure(View.java:16515)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5169)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.view.View.measure(View.java:16515)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5169)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2310)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.view.View.measure(View.java:16515)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1958)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1155)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1337)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1042)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5721)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.view.Choreographer.doCallbacks(Choreographer.java:574)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.view.Choreographer.doFrame(Choreographer.java:544)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.os.Handler.handleCallback(Handler.java:733)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.os.Handler.dispatchMessage(Handler.java:95)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.os.Looper.loop(Looper.java:136)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at android.app.ActivityThread.main(ActivityThread.java:5050)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at java.lang.reflect.Method.invokeNative(Native Method)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at java.lang.reflect.Method.invoke(Method.java:515)
          11-26 10:05:25.363: E/AndroidRuntime(28212): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java)

          原因是:adapter中返回的時候convertView為null.
          posted @ 2014-11-26 13:40 Terry Zou 閱讀(266) | 評論 (0)編輯 收藏
          Exception:
              10-24 17:43:15.112: E/AndroidRuntime(11888): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
          10-24 17:43:15.112: E/AndroidRuntime(11888): at android.view.ViewGroup.addViewInner(ViewGroup.java:3596)
          10-24 17:43:15.112: E/AndroidRuntime(11888): at android.view.ViewGroup.addView(ViewGroup.java:3449)
          10-24 17:43:15.112: E/AndroidRuntime(11888): at android.support.v4.view.ViewPager.addView(ViewPager.java:1305)
          10-24 17:43:15.112: E/AndroidRuntime(11888): at android.view.ViewGroup.addView(ViewGroup.java:3394)
          10-24 17:43:15.112: E/AndroidRuntime(11888): at android.view.ViewGroup.addView(ViewGroup.java:3370)
          10-24 17:43:15.112: E/AndroidRuntime(11888): at com.zhihe.xqsh.adapter.IndexTopPagerAdapter.instantiateItem(IndexTopPagerAdapter.java:72)
          10-24 17:43:15.112: E/AndroidRuntime(11888): at android.support.v4.view.PagerAdapter.instantiateItem(PagerAdapter.java:110)
          10-24 17:43:15.112: E/AndroidRuntime(11888): at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:833)
          10-24 17:43:15.112: E/AndroidRuntime(11888): at android.support.v4.view.ViewPager.populate(ViewPager.java:1017)
          10-24 17:43:15.112: E/AndroidRuntime(11888): at android.support.v4.view.ViewPager.populate(ViewPager.java:915)
          10-24 17:43:15.112: E/AndroidRuntime(11888): at android.support.v4.view.ViewPager$3.run(ViewPager.java:245)
          10-24 17:43:15.112: E/AndroidRuntime(11888): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
          10-24 17:43:15.112: E/AndroidRuntime(11888): at android.view.Choreographer.doCallbacks(Choreographer.java:574)
          10-24 17:43:15.112: E/AndroidRuntime(11888): at android.view.Choreographer.doFrame(Choreographer.java:543)
          10-24 17:43:15.112: E/AndroidRuntime(11888): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
          10-24 17:43:15.112: E/AndroidRuntime(11888): at android.os.Handler.handleCallback(Handler.java:733)
          10-24 17:43:15.112: E/AndroidRuntime(11888): at android.os.Handler.dispatchMessage(Handler.java:95)
          10-24 17:43:15.112: E/AndroidRuntime(11888): at android.os.Looper.loop(Looper.java:136)
          10-24 17:43:15.112: E/AndroidRuntime(11888): at android.app.ActivityThread.main(ActivityThread.java:5050)
          10-24 17:43:15.112: E/AndroidRuntime(11888): at java.lang.reflect.Method.invokeNative(Native Method)
          10-24 17:43:15.112: E/AndroidRuntime(11888): at java.lang.reflect.Method.invoke(Method.java:515)
          10-24 17:43:15.112: E/AndroidRuntime(11888): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:805)
          10-24 17:43:15.112: E/AndroidRuntime(11888): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:621)
          10-24 17:43:15.112: E/AndroidRuntime(11888): at dalvik.system.NativeStart.main(Native Method)
          10-24 17:43:15.132: I/Process(11888): Sending signal. PID: 11888 SIG: 9

          原因:
              當(dāng)圖片向左滑動的時候,之后執(zhí)行instantiateItem方法,而不去執(zhí)行刪除方法,所以出現(xiàn)上述異常
              所以在instantiateItem方法中執(zhí)行刪除操作,如下:
              View child = mPageViewList.get(position);
          if(child.getParent()!=null){
          ((ViewPager)container).removeView(child);
          }
              注意,在此執(zhí)行了刪除操作之后,把destroyItem方法中的刪除去掉,因為,如果不去掉向左滑動的時候,會顯示為空,原因如下:打印url是進(jìn)行加載View,當(dāng)加載完成之后會去執(zhí)行destroyItem中的方法,所以,需要把destroyItem中的刪除去掉。
          10-24 17:49:14.452: W/(16419): ----zhihe---- IndextoppagerAdapter instantiateItem position:0
          10-24 17:49:14.452: W/(16419): ----zhihe---- IndextoppagerAdapter instantiateItem image:http://ys.rili.com.cn/images/image/201401/0111174780.jpg
          10-24 17:49:14.462: W/(16419): ----zhihe---- IndextoppagerAdapter destroyItem position:0
          posted @ 2014-10-24 17:53 Terry Zou 閱讀(1349) | 評論 (0)編輯 收藏
          http://blog.csdn.net/asmcvc/article/details/9948419

          舉例子:
          -optimizationpasses 5
          -dontusemixedcaseclassnames
          -dontskipnonpubliclibraryclasses
          -dontpreverify
          -verbose
          -dontwarn
          -dontskipnonpubliclibraryclassmembers
          -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
          -libraryjars libs/afinal-0.2.1-bin.jar
          -libraryjars libs/armeabi/libBaiduMapSDK_v3_1_0.so  #地圖相關(guān)的C++編譯的可執(zhí)行文件(引擎)不要混淆
          -libraryjars libs/armeabi/liblocSDK4d.so                         #定位相關(guān)的C++編譯的可執(zhí)行文件(引擎)不要混淆
          -libraryjars libs/afinal-0.2.1-bin.jar
          -libraryjars libs/android-support-v4.jar
          -libraryjars libs/android-support-v7-recyclerview.jar
          -libraryjars libs/apache_httpClient_full_v43.jar
          -libraryjars libs/support-annotations-21.0.0-rc1.jar
          -libraryjars libs/locSDK_4.2.jar
          -libraryjars libs/baidumapapi_v3_1_0.jar
          -keep class com.baidu.** { *; }   
          -keep class vi.com.gdi.bgl.android.**{*;}
          -keep public class * extends android.app.Fragment
          -keep public class * extends android.app.Activity
          -keep public class * extends android.app.Application
          -keep public class * extends android.app.Service
          -keep public class * extends android.content.BroadcastReceiver
          -keep public class * extends android.content.ContentProvider
          -keep public class * extends android.app.backup.BackupAgentHelper
          -keep public class * extends android.preference.Preference
          -keep public class * extends android.support.v4.**
          -keep public class com.android.vending.licensing.ILicensingService
          -keep class android.support.annotation.** { *; }
          -keep class org.apache.http43.** { *; }
          -keep class android.support.v7.widget.** { *; }
          -keep class net.tsz.afinal.** { *; }
          -keep class com.alibaba.fastjson.** { *; } 
          -keep class android.support.v4.** { *; }
          -keepclasseswithmembernames class * {
              native <methods>;
          }
          -keepclasseswithmembers class * {
              public <init>(android.content.Context, android.util.AttributeSet);
          }
          -keepclasseswithmembers class * {
              public <init>(android.content.Context, android.util.AttributeSet, int);
          }
          -keepclassmembers class * extends android.app.Activity {
             public void *(android.view.View);
          }
          -keepclassmembers enum * {
              public static **[] values();
              public static ** valueOf(java.lang.String);
          }
          -keepclassmembers class * implements java.io.Serializable {
              static final long serialVersionUID;
              private static final java.io.ObjectStreamField[] serialPersistentFields;
              private void writeObject(java.io.ObjectOutputStream);
              private void readObject(java.io.ObjectInputStream);
              java.lang.Object writeReplace();
              java.lang.Object readResolve();
          }
          -keep class * implements android.os.Parcelable {
            public static final android.os.Parcelable$Creator *;
          }
          posted @ 2014-10-21 11:37 Terry Zou 閱讀(267) | 評論 (0)編輯 收藏
          例子如下:
            1 File file = new File(filePath);
            2             if(file.exists()){
            3                 String END = "\r\n";
            4                 String PREFIX = "--" ;
            5                 String BOUNDARY =  UUID.randomUUID().toString();  //邊界標(biāo)識   隨機生成
            6                 String CONTENT_TYPE = "multipart/form-data";   //內(nèi)容類型
            7                 
            8                 InputStream inputStream = null;
            9                 FileInputStream fileStream = null;
           10                 DataOutputStream dos = null;
           11                 HttpURLConnection conn = null;
           12                 try {
           13                     URL url = new URL(Constant.URL_SECONDHAN_TAKEPHOTOATHAND);
           14                     conn = (HttpURLConnection) url.openConnection();
           15                     /*設(shè)置時間*/
           16                     conn.setReadTimeout(10*1000);
           17                     conn.setConnectTimeout(10*1000);
           18                     
           19                     /*允許Input,output,不使用Cache*/
           20                     conn.setDoInput(true);
           21                     conn.setDoOutput(true);
           22                     conn.setUseCaches(false);
           23                     
           24                     /*設(shè)置傳送的method=POST*/
           25                     conn.setRequestMethod("POST");
           26                     conn.setRequestProperty("Connection", "Keep-Alive");
           27                     conn.setRequestProperty("Charset", "UTF-8");
           28                     conn.setRequestProperty("Content-Type", CONTENT_TYPE + ";boundary=" + BOUNDARY); 
           29                     
           30                     /* 設(shè)置DataOutputStream */
           31                     dos = new DataOutputStream(conn.getOutputStream());
           32                     
           33                     StringBuffer sb = new StringBuffer();
           34                     sb.append(PREFIX);
           35                     sb.append(BOUNDARY);
           36                     sb.append(END);
           37                     /**
           38                      * 這里重點注意:
           39                      * name里面的值為服務(wù)器端需要key   只有這個key 才可以得到對應(yīng)的文件
           40                      * filename是文件的名字,包含后綴名的   比如:abc.png  
           41                      */
           42                     sb.append("Content-Disposition: form-data; name=\"UpLoadFile\"; filename=\""+file.getName()+"\""+END); 
           43                     sb.append("Content-Type: application/x-zip-compressed; charset=utf-8"+END);
           44                     sb.append(END);
           45                     dos.write(sb.toString().getBytes());
           46                     
           47                     /*取得文件的FileInputStream*/
           48                     fileStream = new FileInputStream(file);
           49                     
           50                     /*設(shè)置每次寫入1024bytes*/
           51                     int bufferSize = 1024;
           52                     byte[] buffer = new byte[bufferSize];
           53                     int length = -1;
           54                     
           55                     /*從文件讀取數(shù)據(jù)至緩沖區(qū)*/
           56                     while((length=fileStream.read(buffer))!=-1){
           57                         dos.write(buffer,0,length);
           58                     }
           59                     dos.write(END.getBytes());
           60                     byte[] end_data = (PREFIX+BOUNDARY+PREFIX+END).getBytes();
           61                     dos.write(end_data);
           62                     dos.flush();
           63                     
           64                     /* 取得Response內(nèi)容 */
           65                     InputStream is = conn.getInputStream();
           66                     int ch;
           67                     StringBuffer b =new StringBuffer();
           68                     while( ( ch = is.read() ) != -1 ){
           69                         b.append( (char)ch );
           70                     }
           71                     String result = b.toString();
           72                     
           73                 } catch (SocketTimeoutException e) {
           74                     AgUtils.log("", " upload SocketTimeoutException");
           75                     mHandler.sendEmptyMessage(4);
           76                     e.printStackTrace();
           77                 } catch (ConnectTimeoutException e) {
           78                     AgUtils.log("", " download ConnectTimeoutException");
           79                     mHandler.sendEmptyMessage(4);
           80                     e.printStackTrace();
           81                 } catch (UnknownHostException e) {
           82                     AgUtils.log("", " download UnknownHostException");
           83                     mHandler.sendEmptyMessage(4);
           84                     e.printStackTrace();
           85                 } catch (MalformedURLException e) {
           86                     AgUtils.log("", " download MalformedURLException");
           87                     mHandler.sendEmptyMessage(4);
           88                     e.printStackTrace();
           89                 } catch (ProtocolException e) {
           90                     AgUtils.log("", " ProtocolException");
           91                     e.printStackTrace();
           92                     mHandler.sendEmptyMessage(2);
           93                 } catch (IOException e) {
           94                     AgUtils.log("", " IOException");
           95                     mHandler.sendEmptyMessage(0);
           96                     e.printStackTrace();
           97                 } finally {
           98                     XqshService.this.sendBroadcast(new Intent(INTENT_UPLOAD_COMPLETE));
           99                     try {
          100                         if (fileStream != null) {
          101                             fileStream.close();
          102                         }
          103                         if (inputStream != null) {
          104                             inputStream.close();
          105                         }
          106                         if (dos != null) {
          107                             dos.close();
          108                         }
          109                         
          110                         if (conn != null) {
          111                             conn.disconnect();
          112                             conn = null;
          113                         }
          114                     } catch (IOException e) {
          115                         e.printStackTrace();
          116                     }
          117                 }
          118             }
          posted @ 2014-09-11 08:16 Terry Zou 閱讀(185) | 評論 (0)編輯 收藏
          1.建立FrameLayout,因為該布局方式只顯示下層內(nèi)容,如:
           1 <FrameLayout
           2     xmlns:android="http://schemas.android.com/apk/res/android"
           3     android:layout_width="match_parent"
           4     android:layout_height="fill_parent">
           5     <LinearLayout
           6         android:layout_width="fill_parent"
           7         android:layout_height="fill_parent"
           8         android:orientation="vertical" 
           9         android:id="@+id/main"
          10         android:background="@color/white"
          11         >
          12         <LinearLayout 
          13             android:layout_width="fill_parent"
          14             android:layout_height="wrap_content"
          15             >
          16             <GridView
          17                 android:id="@+id/gridview_send"
          18                 android:layout_width="fill_parent"
          19                 android:layout_height="fill_parent"
          20                 android:layout_marginLeft="20dp"
          21                 android:layout_marginTop="40dp"
          22                 android:listSelector="@color/bule_overlay"
          23                 android:numColumns="4" >
          24                    </GridView>
          25         </LinearLayout>
          26         <ImageView 
          27             android:layout_width="fill_parent"
          28             android:layout_height="wrap_content"
          29             android:src="@drawable/service_public_diver"
          30             android:layout_marginLeft="20dp"
          31             android:layout_marginRight="20dp"
          32             android:layout_marginTop="40px"
          33             /> 
          34          <EditText
          35             android:id="@+id/issueContent"
          36             android:layout_width="fill_parent"
          37             android:layout_height="wrap_content"
          38             android:minLines="4"
          39             android:gravity="top"
          40             android:layout_marginLeft="20dp"
          41             android:layout_marginRight="20dp"
          42             android:layout_marginTop="30px"
          43             android:textColor="#e3e3e3"
          44             android:hint="請輸入內(nèi)容"
          45             android:background="@null"
          46             android:textSize="46px"/>
          47          <ImageView 
          48             android:layout_width="fill_parent"
          49             android:layout_height="wrap_content"
          50             android:src="@drawable/service_public_diver"
          51             android:layout_marginLeft="20dp"
          52             android:layout_marginRight="20dp"
          53             android:layout_marginTop="40dp"
          54             /> 
          55     </LinearLayout>
          56     <LinearLayout 
          57         android:id="@+id/layerMask"
          58         android:layout_width="fill_parent"
          59         android:layout_height="fill_parent"
          60         android:orientation="vertical" 
          61         android:background="@drawable/common_title_back"
          62         android:visibility="gone">
          63      </LinearLayout>
          64 </FrameLayout>

          2.在layerMasK中添加view內(nèi)容
              private LinearLayout layerMask;//遮罩層
            layerMask = (LinearLayout)contentView.findViewById(R.id.layerMask);
              addInnerLayout(R.layout.fragment_takephotoathand_layer,layerMask);
              //設(shè)置點擊不退出遮罩層
            layerMask.setOnTouchListener(new OnTouchListener(){  
                      @Override  
                      public boolean onTouch(View v, MotionEvent event) {  
                          return true;  
                      }  
                  });

              private void addInnerLayout(int layoutResID,LinearLayout view){
          LayoutInflater inflater = (LayoutInflater) ((Activity) mContext).getLayoutInflater();
          View CurView = inflater.inflate(layoutResID, null);
          LinearLayout.LayoutParams lineparam = new LinearLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,
          RelativeLayout.LayoutParams.MATCH_PARENT);
          view.addView(CurView,lineparam);
          }
          3.控制顯示
              layerMask.setVisibility(View.VISIBLE);
          posted @ 2014-09-11 08:13 Terry Zou 閱讀(1248) | 評論 (0)編輯 收藏
          一. intent.setFlags()方法中的參數(shù)值含義:

              1.FLAG_ACTIVITY_CLEAR_TOP例如現(xiàn)在的棧情況為:A B C D 。D此時通過intent跳轉(zhuǎn)到B,如果這個intent添加FLAG_ACTIVITY_CLEAR_TOP標(biāo)記,則棧情況變?yōu)椋篈 B。如果沒有添加這個標(biāo)記,則棧情況將會變成:A B C D B。也就是說,如果添加了FLAG_ACTIVITY_CLEAR_TOP標(biāo)記,并且目標(biāo)Activity在棧中已經(jīng)存在,則將會把位于該目標(biāo)activity之上的activity從棧中彈出銷毀。這跟上面把B的Launch mode設(shè)置成singleTask類似。簡而言之,跳轉(zhuǎn)到的activity若已在棧中存在,則將其上的activity都銷掉。

              2.FLAG_ACTIVITY_NEW_TASK:例如現(xiàn)在棧1的情況是:A B C。C通過intent跳轉(zhuǎn)到D,并且這個intent添加了FLAG_ACTIVITY_NEW_TASK標(biāo)記,如果D這個Activity在Manifest.xml中的聲明中添加了Task affinity,系統(tǒng)首先會查找有沒有和D的Task affinity相同的task棧存在,如果有存在,將D壓入那個棧,如果不存在則會新建一個D的affinity的棧將其壓入。如果D的Task affinity默認(rèn)沒有設(shè)置,則會把其壓入棧1,變成:A B C D,這樣就和不加FLAG_ACTIVITY_NEW_TASK標(biāo)記效果是一樣的了。注意如果試圖從非activity的非正常途徑啟動一個activity(例見下文“intent.setFlags()方法中參數(shù)的用例”),比如從一個service中啟動一個activity,則intent比如要添加FLAG_ACTIVITY_NEW_TASK標(biāo)記(編者按:activity要存在于activity的棧中,而非activity的途徑啟動activity時必然不存在一個activity的棧,所以要新起一個棧裝入啟動的activity)。簡而言之,跳轉(zhuǎn)到的activity根據(jù)情況,可能壓在一個新建的棧中。

              3.FLAG_ACTIVITY_NO_HISTORY:例如現(xiàn)在棧情況為:A B C。C通過intent跳轉(zhuǎn)到D,這個intent添加FLAG_ACTIVITY_NO_HISTORY標(biāo)志,則此時界面顯示D的內(nèi)容,但是它并不會壓入棧中。如果按返回鍵,返回到C,棧的情況還是:A B C。如果此時D中又跳轉(zhuǎn)到E,棧的情況變?yōu)椋篈 B C E,此時按返回鍵會回到C,因為D根本就沒有被壓入棧中。簡而言之,跳轉(zhuǎn)到的activity不壓在棧中。

              4.FLAG_ACTIVITY_SINGLE_TOP:和Activity的Launch mode的singleTop類似。如果某個intent添加了這個標(biāo)志,并且這個intent的目標(biāo)activity就是棧頂?shù)腶ctivity,那么將不會新建一個實例壓入棧中。簡而言之,目標(biāo)activity已在棧頂則跳轉(zhuǎn)過去,不在棧頂則在棧頂新建activity。

          二.intent.setFlags()方法中參數(shù)的用例:

          很多人使用startActivity時候,會碰到如下的異常:
          Caused by: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
          都知道,Context中有一個startActivity方法,Activity繼承自Context,重載了startActivity方法。如果使用Activity的startActivity方法,不會有任何限制,而如果使用Context的startActivity方法的話,就需要開啟一個新的task(編者按:參見一.2.的編者按),遇到上面那個異常的,都是因為使用了Context的startActivity方法。解決辦法是:Java代碼中加一個flag,即intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)。這樣就可以在新的task里面啟動這個Activity了。

          posted @ 2014-05-28 17:43 Terry Zou 閱讀(161) | 評論 (0)編輯 收藏
               摘要:     轉(zhuǎn)自:http://musicbox95351.iteye.com/blog/868526    比如項目為一個UserServlet,主要分三步    1 日志輸出文件log4j.xml的配置。     2 加載日志配置...  閱讀全文
          posted @ 2014-05-26 11:13 Terry Zou 閱讀(1429) | 評論 (0)編輯 收藏

          - 概述NFC標(biāo)簽和四類標(biāo)簽的定義。


              近場通訊技術(shù)的關(guān)鍵要素之一,在于NFC裝置與被動式NFC標(biāo)簽溝通的能力。NFC技術(shù)的這一特征,是許多應(yīng)用成為可能的關(guān)鍵
          NFC標(biāo)簽正在被大量生產(chǎn)、部署在全球若干個領(lǐng)域。部署的標(biāo)簽已逾百萬,隨著該技術(shù)流行,NFC標(biāo)簽將滲入到很多新的領(lǐng)域。
          預(yù)測到未來將有大量標(biāo)簽得到使用,標(biāo)簽的定義必須清晰,已確保不同制造商的標(biāo)簽與設(shè)備達(dá)到兼容。



          - NFC標(biāo)簽基礎(chǔ)


              NFC標(biāo)簽是被動式裝置,可用來與主動式NFC裝置(主動式NFC讀寫器)通信。標(biāo)簽可用于應(yīng)用之內(nèi),例如在海報、以及其他儲存小量數(shù)據(jù)并傳輸?shù)街鲃邮絅FC裝置的場合。在海報中,起作用的部分可用來做主動設(shè)備的接觸點。
              NFC標(biāo)簽所含儲存的數(shù)據(jù)可為任何形式,但一般是用來貯存網(wǎng)址(URL)以供NFC裝置找到進(jìn)一步的信息。所需數(shù)據(jù)量很少,故可使用NFC標(biāo)簽。

              為了定義主動式NFC讀寫器與被動式標(biāo)簽之間的通信,NFC論壇在2006年6月推出了其第一個標(biāo)準(zhǔn)技術(shù)架構(gòu)和NFC合規(guī)裝置的標(biāo)準(zhǔn),包括:NFC數(shù)據(jù)交換格式(NDEF)、三種記錄類型定義(RTD),用于智能海報、文本、互聯(lián)網(wǎng)資源讀取應(yīng)用。


          - NFC標(biāo)簽類型定義


              定義的基本標(biāo)簽類型有四種,以1至4來標(biāo)識,各有不同的格式與容量。這些標(biāo)簽類型格式的基礎(chǔ)是:ISO 14443的A與B類型、Sony FeliCa,前者是非接觸式智能卡的國際標(biāo)準(zhǔn),而后者符合ISO 18092被動式通訊模式標(biāo)準(zhǔn)。

              保持NFC標(biāo)簽盡可能簡單的優(yōu)勢是:在很多場合,標(biāo)簽可為一次性使用,例如在海報中壽命較短的場合。


          各種標(biāo)簽的定義如下:



          • 第1類標(biāo)簽(Tag 1 Type):此類型基于ISO14443A標(biāo)準(zhǔn)。此類標(biāo)簽具有可讀、重新寫入的能力,用戶可將其配置為只讀。存儲能力為96字節(jié),用來存網(wǎng)址URL或其他小量數(shù)據(jù)富富有余。然而,內(nèi)存可被擴充到2k字節(jié)。此類NFC標(biāo)簽的通信速度為106 kbit/s。此類標(biāo)簽簡潔,故成本效益較好,適用于許多NFC應(yīng)用。


          • 第2類標(biāo)簽(Tag 2 Type):此類標(biāo)簽也是基于ISO14443A,具有可讀、重新寫入的能力,用戶可將其配置為只讀。其基本內(nèi)存大小為48字節(jié),但可被擴充到2k字節(jié)。通信速度也是106 kbit/s。


          • 第3類標(biāo)簽(Tag 3 Type):此類標(biāo)簽基于Sony FeliCa體系。目前具有2k字節(jié)內(nèi)存容量,數(shù)據(jù)通訊速度為212 kbit/s。故此類標(biāo)簽較為適合較復(fù)雜的應(yīng)用,盡管成本較高。


          • 第4類標(biāo)簽(Tag 4 Type):此類標(biāo)簽被定義為與ISO14443A、B標(biāo)準(zhǔn)兼容。制造時被預(yù)先設(shè)定為可讀/可重寫、或者只讀。內(nèi)存容量可達(dá)32k字節(jié),通信速度介于106 kbit/s和424 kbit/s之間。

              從上述不同標(biāo)簽類型的定義可以看出,前兩類與后兩類在內(nèi)存容量、構(gòu)成方面大不相同。故它們的應(yīng)用不太可能有很多重疊。

              第1與第2類標(biāo)簽是雙態(tài)的,可為讀/寫或只讀。第3與第4類則是只讀,數(shù)據(jù)在生產(chǎn)時寫入或者通過特殊的標(biāo)簽寫入器來寫入。


          -NFC標(biāo)簽運行

              NFC標(biāo)簽是無需電源的被動裝置。在使用時,用戶以具有NFC功能的設(shè)備與其接觸。標(biāo)簽從讀寫器獲得很小的電源驅(qū)動標(biāo)簽的電路,把小量信息傳輸?shù)阶x寫器。



          標(biāo)簽內(nèi)存里的數(shù)據(jù)被傳至帶有NFC功能的設(shè)備。盡管數(shù)據(jù)量很小,卻可能是把設(shè)備導(dǎo)向到某個網(wǎng)址(URL)、或是小量文本、其他數(shù)據(jù)。



          -NFC標(biāo)簽設(shè)計與制造



          標(biāo)簽設(shè)計與制造需要考慮很多方面。標(biāo)簽是為了大量、極低成本制造,同時保持性能。在設(shè)計標(biāo)簽時,下面是需要考慮的幾個關(guān)鍵的性能參數(shù)與要素:




          • 讀取速度:因為需要在兩個NFC裝置接近時傳輸標(biāo)簽所含的所有數(shù)據(jù),故速度很重要。如果標(biāo)簽傳數(shù)據(jù)較慢,就有不能完全傳輸、可靠性差的危險。結(jié)果影響到用戶,不明白該技術(shù)的用戶,假如不得不重復(fù)多次才能奏效就會對其喪失信心。第一類NFC標(biāo)簽允許所有數(shù)據(jù)整塊(block)傳輸,保持了標(biāo)簽的讀取性能。


          • 晶片尺寸:在標(biāo)簽設(shè)計中,晶片尺寸(die size)具有特別的重要性。尺寸較小,則成本較低、標(biāo)簽也不那么顯眼(對在海報中使用較為重要)。內(nèi)存較小自然導(dǎo)致晶片尺寸較小。


          • 單元價格:鑒于NFC標(biāo)簽的目標(biāo)應(yīng)用是極低成本的(例如用于智能海報),單位價格是標(biāo)簽設(shè)計極其重要的一個因素。在這里,成本至為關(guān)鍵。標(biāo)簽成本受一系列因素影響,包括內(nèi)存大小和所含附加特征帶來的集成電路復(fù)雜性。把內(nèi)存與特征盡可能簡化,成本就能壓低。
            當(dāng)NFC體系真正起飛時,標(biāo)簽生產(chǎn)量可能達(dá)到數(shù)十億的規(guī)模;需要精心設(shè)計,以在成本與性能之間取得正確的平衡。
          posted @ 2014-05-16 10:33 Terry Zou 閱讀(218) | 評論 (0)編輯 收藏
          問題:按照NDEF消息格式來解析下列Hex串?

          D1 02 1F 53 70 91 01 0E 54 02 
          65 6E 68 65 6C 6C 6F 20 77 6F 
          72 6C 64 51 01 09 55 01 73 69 
          6E 61 2E 63 6F 6D

          解答:
              
          (1)NDEF記錄格式如下,
             
              
              Byte 0: D1
              0xD1 = 11010001B,對應(yīng)的標(biāo)志位如下:
              MB(Message Begin) = 1,說明這是首記錄
              ME(Message End) = 1,說明這是末記錄(說明消息只有一個記錄)
              CF(Chunk Flag) = 0,說明記錄未被切塊
              SR(Short Record) = 1,說明這是短記錄,PAYLOAD_LENGTH 占1字節(jié)
              IL(ID_LENGTH field is present) = 0,說明沒有 ID_LENGTH 和 ID 域
              TNF(Type Name Format) = 1,說明TYPE類型是 NFC Forum well-known type [NFC RTD],
               下表是TNF編碼對應(yīng)表
              
                  因為SR=1且IL=0,所以NDEF記錄可簡化為如下結(jié)構(gòu)
                  
              Byte 1: 02
              TYPE_LENGTH = 2,TYPE域長度為2

              Byte 2: 1F
              PAYLOAD_LENGTH = 0x1F,Payload域長度為31

              Byte 3-4: 53 70
              TYPE = "Sp",因為TYPE域長度為2,所以此處TYPE取2個字節(jié)

              此后全是PAYLOAD域的內(nèi)容,因為TYPE="Sp",所以需要使用的Spec是“Smart Poster Record Type Definition”

             (2)智能海報的記錄類型其實也是一個NDEF消息。沒錯,NDEF記錄的PAYLOAD域可以存放任何東西,包括嵌套NDEF消息。

              智能海報的內(nèi)容可以包括標(biāo)題、URI、動作、圖標(biāo)、大小、類型等記錄,其中URI記錄是必須有的,其他的可選,次序無所謂。

                  1)現(xiàn)在將智能海報的內(nèi)容貼過來,如下

              91 01 0E 54 02 65 6E 68 65 6C 
              6C 6F 20 77 6F 72 6C 64 51 01 
              09 55 01 73 69 6E 61 2E 63 6F 
              6D

              Byte 0: 91
              0x91 = 10010001B,對應(yīng)的標(biāo)志位如下:
              MB = 1,說明這是首記錄
              ME = 0,說明后面還有記錄
              CF = 0,說明記錄未被切塊
              SR = 1,說明這是短記錄,PAYLOAD_LENGTH 占1字節(jié)
              IL = 0,說明沒有 ID_LENGTH 和 ID 域
              TNF = 1,說明TYPE類型是 NFC Forum well-known type

              Byte 1: 01
              TYPE_LENGTH = 1,TYPE域長度為1

              Byte 2: 0E
              PAYLOAD_LENGTH = 0x0E,Payload域長度為14

              Byte 3: 54
              TYPE = "T",說明是文本記錄類型,適用“Text Record Type Definition”

              Byte 4-17: 02 65 6E 68 65 6C 6C 6F 20 77 6F 72 6C 64 
              這是文本記錄的內(nèi)容

              下面對“02 65 6E 68 65 6C 6C 6F 20 77 6F 72 6C 64”按照文本記錄格式解碼。

              文本記錄格式如下:
              
                  
              Byte 0: 02
              Status = 2,由下表可知,IANA語言碼長度=2
              
              Byte 1-2: 65 6E
              ISO/IANA語言碼 = “en”,編碼為US-ASCII碼

              Byte 3-13:68 65 6C 6C 6F 20 77 6F 72 6C 64
              按照ASCII碼解碼可得“hello world”

              至此,對海報內(nèi)容的第一條NDEF記錄解碼完成,接下來是對剩余內(nèi)容解碼。

                  2)剩余內(nèi)容為“51 01 09 55 01 73 69 6E 61 2E 63 6F 6D”,同樣也是按照NDEF記錄來解碼。

              Byte 0: 51
              0x91 = 01010001B,對應(yīng)的標(biāo)志位如下:
              MB = 0,說明這不是首記錄
              ME = 1,說明這是末記錄
              CF = 0,說明記錄未被切塊
              SR = 1,說明這是短記錄,PAYLOAD_LENGTH 占1字節(jié)
              IL = 0,說明沒有 ID_LENGTH 和 ID 域
              TNF = 1,說明TYPE類型是 NFC Forum well-known type

              Byte 1: 01
              TYPE_LENGTH = 1,TYPE域長度為1

              Byte 2: 09
              PAYLOAD_LENGTH = 0x09,Payload域長度為9

              Byte 3: 55
              TYPE = "U",說明是URI記錄類型,適用“URI Record Type Definition”

              Byte 4-12: 01 73 69 6E 61 2E 63 6F 6D
              這是URI記錄的內(nèi)容

              URI記錄內(nèi)容格式如下:
                  
                  
              Byte 0: 01
              ID碼 = 1,由下表可知,對應(yīng)的協(xié)議是“http://www.”
               
                              
                          
              Byte 1-8: 73 69 6E 61 2E 63 6F 6D
              按照UTF-8格式解碼可得:“sina.com”

              至此,整個NDEF消息解碼完畢。

              回顧一下吧,整個結(jié)構(gòu)的解碼將其如下分解:

              D1 02 1F 53 70                                        <-- 智能海報
              91 01 0E 54 02 65 6E 68 65 6C 6C 6F 20 77 6F 72 6C 64 <-- 文本
              51 01 09 55 01 73 69 6E 61 2E 63 6F 6D                <-- URI

          posted @ 2014-05-14 16:17 Terry Zou 閱讀(1851) | 評論 (0)編輯 收藏
               摘要: AsyncTask和Handler對比 1 ) AsyncTask實現(xiàn)的原理,和適用的優(yōu)缺點 AsyncTask,是android提供的輕量級的異步類,可以直接繼承AsyncTask,在類中實現(xiàn)異步操作,并提供接口反饋當(dāng)前異步執(zhí)行的程度(可以通過接口實現(xiàn)UI進(jìn)度更新),最后反饋執(zhí)行的結(jié)果給UI主線程. 使用的優(yōu)點: l  簡單,快捷 l  過程可控  &n...  閱讀全文
          posted @ 2014-05-08 17:25 Terry Zou 閱讀(181) | 評論 (0)編輯 收藏
          僅列出標(biāo)題
          共8頁: 上一頁 1 2 3 4 5 6 7 8 下一頁 
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          收藏夾

          Java

          搜索

          •  

          最新隨筆

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 怀化市| 裕民县| 天长市| 永兴县| 隆子县| 营口市| 衡东县| 建平县| 久治县| 温宿县| 庐江县| 日照市| 梨树县| 上饶市| 来宾市| 石河子市| 融水| 黑山县| 连州市| 措勤县| 陵川县| 东光县| 呼伦贝尔市| 女性| 西乌珠穆沁旗| 宜宾县| 沙坪坝区| 康乐县| 自治县| 阿瓦提县| 咸阳市| 通海县| 通城县| 巴彦县| 罗江县| 武乡县| 建阳市| 西安市| 曲水县| 左权县| 开化县|