Android console 的一种简单实现

老铁们好,最近要公司测试人员做一个测试工具,需要实现一个 console 来展示测试结果,简单实现了一下,备忘一下,以后有类似需求直接此处拿代码

其实现要点是

1 layout xml

使用一个 ScrollView 的目的是让这个 console 能滚动,否则容纳不了多少内容,其实 TextView 自己也能实现滚动,不过据我观察,效果不咋地

    <ScrollView
        android:id="@+id/mpt_console_container"
        android:layout_width="match_parent"
        android:layout_height="240dp"
        android:background="@color/background_gray"
        app:layout_constraintTop_toBottomOf="@id/mpt_log_title">

        <TextView
            android:id="@+id/mpt_console"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="none" />

    </ScrollView>

2 在 Activity 中我们把 View 找出来

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.{your-layout})
        console = findViewById(R.id.mpt_console)
        consoleScroller = findViewById(R.id.mpt_console_container)
        。。。
}

3 封装一个 console 方法

直接把我们需要展示的信息 append 到 TextView 上,为了展示最新 log,我们给它自动滚动到底部

    private fun console(msg: String) {
        console.append("$msg\n\n")
        consoleScroller.post { consoleScroller.fullScroll(View.FOCUS_DOWN) }
    }

4 再给一个清除日志和复制日志的入口吧,放到右上角菜单里面,注意我们的 Activity 用得是 AppCompatActivity,这样,才能有 ActionBar 呦

    private val groupId = 0
    private val itemClearId = 1
    private val itemCopyId = 2
    override fun onCreateOptionsMenu(menu: Menu?): Boolean {
        menu?.add(groupId, itemClearId, Menu.NONE, R.string.mpt_clear_log)
        menu?.add(groupId, itemCopyId, Menu.NONE, R.string.mpt_copy_log)
        return true
    }

    override fun onOptionsItemSelected(item: MenuItem?): Boolean {
        item ?: return false
        when (item.itemId) {
            itemClearId -> console.text = ""
            itemCopyId -> {
                (getSystemService(CLIPBOARD_SERVICE) as ClipboardManager).primaryClip = ClipData.newPlainText("", console.text)
                toast(R.string.mpt_copy_success)
            }
        }
        return true
    }

是不是很简单呢,老铁们,以后遇到这样的需求直接来 copy 代码就行了,最终效果

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值