1. android開發中獲取選中文字以及彈出框
只需要在Textview中增加android:textIsSelectable="true"即可長按彈出復制,如果要彈出對話框,那就要用Dialog,dialog的用法如下:
Android中,在Dialog中增加EditText需要使用view控制項,也可參考附件源代碼。
具體實現代碼:
1.創建對象框
AlertDialog.Builder builder = new Builder(context);
builder.setTitle("請輸入"); //設置對話框標題
builder.setIcon(android.R.drawable.btn_star); //設置對話框標題前的圖標
2.創建EditText輸入框
final EditText edit = new EditText(context);
3.將輸入框賦值給Dialog,並增加確定取消按鍵
builder.setView(edit);
builder.setPositiveButton("確認", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(context, "你輸入的是: " + edit.getText().toString(), Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(context, "你點了取消", Toast.LENGTH_SHORT).show();
}
});
4.設置常用api,並show彈出
builder.setCancelable(true); //設置按鈕是否可以按返回鍵取消,false則不可以取消
AlertDialog dialog = builder.create(); //創建對話框
dialog.setCanceledOnTouchOutside(true); //設置彈出框失去焦點是否隱藏,即點擊屏蔽其它地方是否隱藏
dialog.show();
2. Android里怎麼實現TextView裡面的文字一個一個逐漸顯示出來的動畫效果
在Android開發中,如果想要實現TextView中的文字一個一個逐漸顯示出來的動畫效果,可以採用自定義控制項的方式。具體實現步驟如下:
首先,需要創建一個自定義的View類,然後在該類中重寫onDraw()方法,以便於繪制文字。這一步是必要的,因為默認的TextView並不能滿足逐字顯示文字的需求。
接著,獲取需要顯示的文字內容。這部分代碼可以放在自定義View類的構造函數中,或者在外部調用時傳入需要顯示的文字。
為了實現逐字顯示文字的效果,可以使用Handler的postDelay()方法。這個方法可以實現延遲執行某個任務。通過設置適當的時間延遲,可以讓程序在指定的時間後執行顯示文字的任務。
在自定義View的onDraw()方法中,可以使用DrawText()方法來繪制文字。通過循環調用DrawText()方法,可以實現逐字顯示的效果。每次調用DrawText()時,只顯示一部分文字,然後通過Handler的postDelay()方法設定一定的時間延遲,讓程序在指定的時間後再次調用DrawText()方法,從而實現逐字顯示的效果。
值得注意的是,為了保證文字顯示的流暢性,可以適當調整postDelay()方法中的時間延遲值。如果時間間隔設置得太短,可能會導致文字顯示不夠流暢;而如果時間間隔設置得太長,則可能會使文字顯示效果過於緩慢。
通過這種方式,可以在Android應用中實現TextView中的文字一個一個逐漸顯示出來的動畫效果。這種方式不僅能夠增強界面的美觀性,還可以提高用戶體驗。
3. Android Canvas繪制文字時的橫、縱向對齊
在Android Canvas中繪制文字時,橫、縱向對齊涉及到幾個關鍵屬性,分別是Align屬性、TextBound以及獲取繪制線的Paint方法。
橫向上,Align屬性決定了文字相對於繪制點的水平對稱方式。Align.LEFT、CENTER、RIGHT分別對應文字的左、中、右初始繪制基點與目標基點的對齊方式。設置Align屬性後,文字將根據選定基點與目標基點進行對齊,實現文字的橫向定位。
TextBound屬性是一個矩形(Rect),它代表了當前繪制字元的邊界。通常,這個矩形在屏幕上顯示位置較為特殊,但其實際意義在於表示字元邊界,通過測量邊界寬度和高度可以得到繪制字元的寬度和高度。在Align.LEFT模式下,TextBound的左右邊距即為繪制基點與目標基點之間的偏移量。
為了將文字繪制在Canvas的中心,同時正確顯示TextBound,需要調整TextBound的位置與文字內容相匹配。實際應用中,需要設置文字的繪制基線,以確保文字主體內容的上下邊界與期望位置對齊,通常基線以上包含95%的文字內容,而基線下方則主要涉及特殊的字元尾部。基線是西文字體設計與排版的概念,對中文沒有直接影響,但影響了期望的定位方式。
為了實現文字的垂直居中,需要計算文字基線與目標居中位置之間的差異,並將文字繪制起點向下調整。此調整量等於文字邊界基線到文字底部的距離,確保文字中心與目標中心對齊。
繪制線(Metrics)由Paint和字體共同決定,一旦Paint和字體確定,繪制線便固定下來,不會因內容變化而改變。TextBound用於測量特定內容的邊界值,其值隨文本內容變化而變化。在包含當前字元集中最高字元時,TextBound的bottom、top與Paint的Ascent、Descent之間會重合。
總結而言,橫向上通過Align屬性實現文字的水平對齊,縱向上通過調整繪制基線和文字內容邊界,結合Paint的Metrics屬性確保文字在Canvas中的精確定位。在實現文字的定位時,理解和應用TextBound屬性和Paint方法至關重要。