編輯:關於Android編程
package com.example.androidtest; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import android.app.Activity; import android.text.ClipboardManager; import android.content.Context; import android.os.Bundle; import android.util.Base64; import android.view.Menu; import android.view.View; import android.widget.TextView; public class MainActivity extends Activity { private TextView tv; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView)findViewById(R.id.mytv); } public void onclick(View view){ MyData data = new MyData("xi","23"); String base64code = ""; try { //編碼加密 ByteArrayOutputStream bytearray = new ByteArrayOutputStream(); ObjectOutputStream objectout = new ObjectOutputStream(bytearray); objectout.writeObject(data); base64code = Base64.encodeToString(bytearray.toByteArray(), Base64.DEFAULT); objectout.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } ClipboardManager clip = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE); clip.setText(base64code); getclip(); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } public void getclip(){ ClipboardManager clip = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE); String msg = clip.getText().toString(); MyData mydata = null; //解碼 byte[] bytearray = Base64.decode(msg, Base64.DEFAULT); ByteArrayInputStream byteinput = new ByteArrayInputStream(bytearray); try { ObjectInputStream out = new ObjectInputStream(byteinput); mydata = (MyData)out.readObject(); } catch (Exception e) { // TODO: handle exception } tv.setText(mydata.toString()); } }
MyData類
package com.example.androidtest; import java.io.Serializable; public class MyData implements Serializable { private String name; private String age; public MyData(String n,String age){ this.name = n; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } @Override public String toString() { // TODO Auto-generated method stub return "name:"+name + " age:"+age; } }
易錯點:
剪切板導入的類是android.text.ClipboardManager;不是android.content.ClipboardManager;
前言:經常會看到有一些app的banner界面可以實現循環播放多個廣告圖片和手動滑動循環。本以為單純的ViewPager就可以實現這些功能。但是蛋疼的事情來了
今天來講講自定義單個控件,就拿開關按鈕來講講,相信大家見了非常多這樣的了,先看看效果:我們可以看到一個很常見的開關按鈕,那就來分析分析。首先:這是由兩張圖片構成:①一張為
一.內存洩漏概念1.什麼是內存洩漏?用動態存儲分配函數動態開辟的空間,在使用完畢後未釋放,結果導致一直占據該內存單元。直到程序結束。即所謂的內存洩漏。其實說白了就是該內存
Android原生控件只有橫向進度條一種,而且沒法變換樣式,比如原生rom的樣子很丑是吧,當偉大的產品設計要求更換前背景,甚至縱向,甚至圓弧狀的,咋辦,比如:ok,我們開