1. 程式人生 > >Anroid 豎屏模式下橫向顯示Toast

Anroid 豎屏模式下橫向顯示Toast

我們在開發應用過程中,可能會遇到這樣的需求,在豎屏Activity中橫向顯示一個Toast提示,當然每個人思考的方式不一樣,實現的方法也會有很多種了,這樣提供這樣一種思路供大家參考。

  • 效果圖
    效果圖
    gif動畫不是很清晰,這不重要~~~~~

  • 實現思路,在Toast中有setView這個方法,我們可以設定一個豎向顯示文字橫向顯示的View,然後再設定Toast的位置不就可以。

//自定義一個View,通過旋轉畫布來繪製View上顯示的文字

public class TextView1 extends View {

    private Paint paint;

    private String text = "";

    public TextView1(Context context) {
        super(context);
        init();
    }

    public TextView1(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public TextView1(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    private void init() {
        paint = new Paint();
        paint.setTextSize(dp2px(15));
        paint.setColor(Color.WHITE);
    }

    public void setText(String text) {
        this.text = text;
    }

    private int dp2px(int dp) {
        float density = getContext().getResources().getDisplayMetrics().density;
        return (int) (dp * density + 0.5f);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        canvas.translate(dp2px(2), dp2px(1));
        canvas.rotate(90);//旋轉90度
        canvas.drawText(text, 0, 0, paint);
        canvas.save();
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        setMeasuredDimension((int) paint.measureText("我") + dp2px(2),
                (int) paint.measureText(text) + dp2px(2));
    }
}

然後呼叫Toast的setView方法

 Toast toast = new Toast(context);
 TextView1 textView = new TextView1(context);
 textView.setBackgroundColor(Color.BLACK);
 textView.setText("測試測試測試");
 toast.setView(textView);
 toast.setMargin(-1f, 0);
 toast.setGravity(Gravity.CENTER_VERTICAL,700,0);
 toast.show();
  • kotlin版
class TextView1 : View {

    private var paint: Paint? = null
    var text = ""
        set(value) {
            field = value
        }

    init {
        paint = Paint()
        paint!!.textSize = dp2px(15)
        paint!!.color = Color.WHITE
    }

    companion object {
        fun dp2px(dp: Int): Float {
            val density = Resources.getSystem().displayMetrics.density
            return dp * density + 0.5f
        }
    }

    constructor(context: Context?) : super(context)
    constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs)
    constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr)

    override fun onDraw(canvas: Canvas) {
        canvas.translate(dp2px(2), dp2px(1))
        canvas.rotate(90f)
        canvas.drawText(text, 0f, 0f, paint)
        canvas.save()
    }

    override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
        setMeasuredDimension(
            (paint!!.measureText("我") + dp2px(2)).toInt(),
            (paint!!.measureText(text) + dp2px(2)).toInt()
        )
    }
}

相關推薦

Anroid 模式橫向顯示Toast

我們在開發應用過程中,可能會遇到這樣的需求,在豎屏Activity中橫向顯示一個Toast提示,當然每個人思考的方式不一樣,實現的方法也會有很多種了,這樣提供這樣一種思路供大家參考。 效果圖

Android中EditText被輸入法軟鍵盤遮擋的完美解決方案(非全模式)

1、不要給EditText的背景設定為@null 清單檔案中為activity設定屬性 程式碼中設定顯示輸入法 android:windowSoftInputMode=”stateVisible

Android模式實現橫效果

android橫豎屏切換是非常耗時間的,而且切換的過程也會存在明顯的翻轉卡頓效果,那麼是否可以在豎屏模式下實現橫屏的效果呢?答案是肯定的,這裡提供一種方法,其思路是對view進行90度的旋轉,而且實現起來非常簡單,其效果圖如下: 首先我們先在layout裡排版出一個水平

模式,編輯手機聯絡人新增圖片,儲存後聯絡人頭像與之前預設的圖片重疊或者是有陰影在頭像上

測試步驟: 橫屏模式下,編輯手機聯絡人新增圖片,儲存後聯絡人頭像顯示模糊不清晰。退出該聯絡人介面,再次進入的時候顯示清晰,後續在橫屏模式下再編輯該聯絡人頭像都是清晰的。只有第一次的時候顯示不清晰。 期望結果: 橫屏模式下不管是否第一次編輯儲存聯絡人頭像都應該清晰顯示。 實際結果: 橫

iOS螢幕旋轉之為橫視訊播放增加模式

在App Store上的大部分視訊播放App中,都實現了豎屏小屏播放以顯示更多相關資訊,橫屏切換到全屏播放,這樣的互動顯得優雅而大方。最近專案裡有個這樣的需求,為全屏視訊播放加上豎屏模式。下面,讓我們一起來實現這個需求。 iOS中的方向 iOS裝置中有兩種方向,一種是裝

360瀏覽器相容模式樣式顯示混亂的解決方法

程式碼示例 在head標籤中新增一行程式碼: <html> <head> <meta name="renderer" content="webkit|ie-comp|ie-stand"> </head> <body&

手機橫情況的圖片旋轉

圖片渲染要解決的幾個主要問題 1、圖片預設是水平方向,要設定圖片居中 max-height:100%;max-width:10

Ubuntu 16.04 旋轉顯示器螢幕 顯示

xrandr -o left $ xrandr -o left 向左旋轉90度 $ xrandr -o right 向右旋轉90度 $ xrandr -o inverted 上下翻轉 $ xrandr

5.1 vim介紹 5.2 vim顏色顯示和移動光標 5.3 vim一般模式移動光標 5.4 vim一般模式復制、剪切和粘貼

介紹 vim 顏色顯示 5.1 vim介紹5.2 vim顏色顯示和移動光標5.3 vim一般模式下移動光標5.4 vim一般模式下復制、剪切和粘貼5.1 vim介紹vim 是 vi的一個升級版本vim 是帶有顏色顯示的再試下vim 命令[[email protected]/* */ ~

非單頁模式 修改頭部顯示效果

src ngs add jquer pan 解決方法 個人中心 script ger 1. 問題: 多個頁面共享頭部,但不是單頁引用,在頭部導航點擊後 頁面跳轉,瀏覽器刷新 本來加上的樣式又消失了 2. 解決方法: 01. 根據頁面url 做判斷 0

5.1 vim介紹 5.2 vim顏色顯示和移動光標 5.3 vim一般模式移動光標 5.4 vi

vim5.1 vim介紹vim介紹按 i 鍵進入編輯模式5.2 vim顏色顯示和移動光標vim顏色顯示和移動vim編輯:gg:移動到最上面一行shift+O:光標在最上面一行的上面,相當於插入顯示顏色5.3 vim一般模式下移動光標5.4 vim一般模式下復制、剪切和粘貼5.1 vim介紹 5.2 vim顏色

四周第二次課(1月3日) 5.1 vim介紹 5.2 vim顏色顯示和移動光標 5.3 vim一般模式移動光標 5.4 vim一般模式復制、剪切和粘貼

技術 完成 1.0 正在 tin carp 3.4 style ransac 四周第二次課(1月3日)5.1 vim介紹5.2 vim顏色顯示和移動光標5.3 vim一般模式下移動光標5.4 vim一般模式下復制、剪切和粘貼 [root@localhost ~]# [r

十七、vim介紹、vim顏色顯示和移動光標、vim一般模式移動光標、vim一般模式復制、剪切和粘

vim介紹 vim一般模式 十七、vim介紹、vim顏色顯示和移動光標、vim一般模式下移動光標、vim一般模式下復制、剪切和粘貼一、vim介紹vim:vi的升級版,區別就是:vi在編輯文本時不會顯示顏色,而vim會。它的配置文件:/etc/vimrc、一些高級的功能可在這個配置文件/root/.vi

四周第二次課 5.1 vim介紹 5.2 vim顏色顯示和移動光標 5.3 vim一般模式移動光標

學習 打卡5.1 vim介紹5.2 vim顏色顯示和移動光標5.3 vim一般模式下移動光標 1.# vim (使用vim編輯文件 字符以彩色顯示) vi 沒有顏色 vim有顏色顯示 yum install -y vim-enhanced 使用yum命令安裝vim包 vim /etc/p

vim介紹 vim顏色顯示和移動光標 vim一般模式移動光標 一般模式復制剪切粘貼

258866vim介紹Vim是一個類似於Vi的著名的功能強大、高度可定制的文本編輯器,在Vi的基礎上改進和增加了很多特性。 首先先安裝vimyum install -y vim-enhanced·我們對比一下vi和vim 打開的區別我們先用vi打開/etc/passwd/看一下·再用vim /etc/pas

Linux centosVMware Vim介紹、vim顏色顯示和移動光標、vim一般模式移動光標、vim一般模式復制、剪切和粘貼

vim swd vmw 默認 復制粘貼 passwd roo vim配置文件 -bash 一、Vim介紹 vim 是一款功能強大的文本編輯器,是vi的升級版,帶有顏色顯示, 默認有三種模式:一般模式, 命令模式, 編輯模式 安裝Vim [root@davery ~]#

IDLE的GUI交互模式完美清

onf 安裝位置 modified tar undo cfg delete around === IDLE的GUI交互模式下完美清屏=======================================================================

真實模式字元的顯示及中斷

參考書籍《0x86從真實模式到保護模式》 1.真實模式顯示字元 首先,電腦開機進入系統,載入bios,然後bios完成一些硬體的初始化,從磁碟讀取mbr到絕對地址0x7c00處,然後跳轉至0x7c00,此時螢幕的顯示模式預設為80*25(一行80個字元,共25行)。 如何對螢幕輸出字元?

使用Chrome-headless模式,截圖不全的問題

在headless模式下,是沒有開啟瀏覽器視窗的,那麼driver.maximize_window(),找不到目標也打不開。 我們可以換一種方式,去在無頭模式下,指定瀏覽器的視窗大小執行即可。 __options = Options() __options.add_argum

開機自動播放 電視機顯示開發應用2-機頂盒軟體開發

開機自動播放 電視機豎屏顯示開發應用2-機頂盒軟體開發 基於安卓機頂盒的開發與應用(1)廣告演示-開機自動播放, 巧用BroadcastReceiver實現開機“自”啟動 1、BOOT_COMPLETED在ActivityManagerService中由系統傳送。 2、應用可以監聽該廣播