Androidだと、認証なしのプロキシの場合は端末の設定画面から設定することができますが、認証付きのプロキシは端末の設定画面から設定することができません。(ユーザー名とパスワードを入力できない。)
今回どうしても認証付きのプロキシで通信を行いたかったので
、色々と調べてみたのですが、OkHttpでサクッと対応できてしまったのでメモがてら投稿。
proxyAuthenticator を使う
OkHttpClient.Builder の proxyAuthenticator で認証情報を設定します。
下記サンプルコードでは、ユーザー名 username 、パスワード password としています。
val client = OkHttpClient.Builder()
    .proxy(Proxy(Proxy.Type.HTTP, InetSocketAddress("http://example.com", 3128)))
    .proxyAuthenticator(object : Authenticator {
        override fun authenticate(route: Route?, response: Response): Request? {
            val credential = Credentials.basic("username", "password")
            return response.request.newBuilder()
                .header("Proxy-Authorization", credential)
                .build()
        }
    })
    .build()
あとはこの client をRetrofitとかで使うようにすればOKです。
参考