⑴ android 監聽復制、剪切、粘貼事件,粘貼後直接進行介面請求
在我們的項目開發中,有時會遇到這樣的需求:當用戶在輸入框中進行了粘貼操作,直接就使用粘貼的內容進行服務端介面的請求,不需要用戶再點擊確認後才去進行介面請求。
對於這種情況,可以想到兩種方式實現:
其實以上兩種業務實現方式都涉及到了監聽復制、剪切、粘貼事件。
1 - 通過剪切板監聽。
2 - 通過自定義EditText,重寫onTextContextMenuItem() 方法實現監聽。
剪切板的實現其實在官方文檔中找到相應的內容。
我這里只監聽了粘貼事件。如果有需要,可以自行拓展回調介面。
通過這種方法監聽有點要注意,那就是你在回調中是獲取不到復制、剪切、粘貼的文本內容的。想要獲取到復制、剪切的文本還是需要通過監聽剪切板去獲取。
粘貼的內容的獲取 其實可以在Activity中添加個標記,在TextWatcher中判斷此標記。這樣可以間接的獲取到粘貼內容。因為在onTextContextMenuItem(),自定義的回調先於super.onTextContextMenuItem(id)執行。這只加單寫了EditText中內容為空的情況,如果有內容,那麼自己去進行字元串的邏輯操作吧。我這里就不寫了。 實測有效哦。
OK,本章內容到此就結束了。如果大家有什麼更好的方法,或者覺得我的方法有啥可以改進的地方,歡迎評論留言哦。
⑵ Android studio復制文件到文件夾的解決方案
在Android studio中,我宏碧們不能直接復制文件到桌面或者我們想要的文件夾。因此我們需要打開as文件對應的目錄再進行復制粘貼。一開始我都是一層一層文件夾打開,效率挺低的,後面發現有簡仿段便的方法。
選中as中需要打開的文件或文件夾,點蔽大舉擊右鍵,選擇reveal in finder;
在終端輸入open [具體目錄],我們也可以打開對應的文件夾,然後再進行復制粘貼。有時候項目比較大,目錄是固定的,我們可以設置別名,簡化命令行操作。我之前的博客,有介紹如何使用別名簡化命令行。
Mac 下,用別名給你的命令行瘦個身
⑶ android如何實現復制/粘貼功能
java">/**
*Android用於復制粘貼數據的框架CopyandPaste。支持簡單和復雜的數據,包括本文(Text)、
*復雜的數據結構(textandbinarystreamdata)、數據流(Stream)、程序asset等。
*/
{
privateEditText_edt,paste_edt;
privateButton_btn,paste_btn;
//剪切板管理工具類
;
//剪切板Data對象
privateClipDatamClipData;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mClipboardManager=(ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
initViews();
initListeners();
}
privatevoidinitViews(){
this._btn=(Button)findViewById(R.id._btn);
this.paste_btn=(Button)findViewById(R.id.paste_btn);
this._edt=(EditText)findViewById(R.id._edt);
this.paste_edt=(EditText)findViewById(R.id.paste_edt);
}
privatevoidinitListeners(){
this._btn.setOnClickListener(this);
this.paste_btn.setOnClickListener(this);
}
@Override
publicvoidonClick(Viewv){
String=_edt.getText().toString().trim();
switch(v.getId()){
caseR.id._btn:
if(TextUtils.isEmpty()){
Toast.makeText(getApplicationContext(),"請輸入內容!",
Toast.LENGTH_SHORT).show();
return;
}
//創建一個新的文本clip對象
mClipData=ClipData.newPlainText("Simpletest",);
//把clip對象放在剪貼板中
mClipboardManager.setPrimaryClip(mClipData);
Toast.makeText(getApplicationContext(),"文本已經復製成功!",
Toast.LENGTH_SHORT).show();
break;
caseR.id.paste_btn:
//GET貼板是否有內容
mClipData=mClipboardManager.getPrimaryClip();
//獲取到內容
ClipData.Itemitem=mClipData.getItemAt(0);
Stringtext=item.getText().toString();
paste_edt.setText(text);
Toast.makeText(getApplicationContext(),"粘貼成功!s",
Toast.LENGTH_SHORT).show();
break;
}
}
}