Android样式开发之shape详细使用

节选自:Android样式开发之shape详细使用


授人以鱼不如授人以渔:本篇文章不仅告诉你如何使用shape,更会告诉你初学shape该怎么学习?希望对你有用!

说明:什么是shape呢?有什么用呢?我们平常在开发当中,通常会遇到这样的情况,就是会给控件增加一个背景,比如button,textview等!可以说shape就是一个形状定义工具。是xml绘图当中非常重要的一个工具,这样说你可能还是不太理解,那么我们就用实例来说明。你可能见过这样的的登录界面。

我们知道以上三个控件一般是两个EditText和一个Button,这个我们都会,但是你却发现上面的控件是有形状的,而且这个button还是有背景色的,你说可以给button设置背景色啊,但是你发现没,他这个背景色还不是纯色而是渐变的,这样的效果该怎么实现呢?你可能会说找一个这样的图片当背景,这倒是一种办法,但是这样不仅会增加apk的大小,而且实现起来也不一定就是这样的效果,其实要实现这样的效果,最好的方法就是使用shape。

Android下拉控件Spinner的使用

代码:

Spinner spinner = findViewById(R.id.spinner); // 获取下拉控件
spinner.setDropDownVerticalOffset(62); // 下拉的纵向偏移

String[] spinnerItems = {"请选择楼号", "1号楼", "2号楼", "3号楼"}; // 数据
// 自定义选中的界面样式(上下文,样式,文本框资源Id,数组)
ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<>(this, R.layout.item_select, R.id.text, spinnerItems);
// 自定义下拉的界面样式
spinnerAdapter.setDropDownViewResource(R.layout.item_drop);
// 设置适配器
spinner.setAdapter(spinnerAdapter);
// 设置Item选择监听器
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        Log.i(TAG, "onItemClick: spinnerItem");
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {
        Log.i(TAG, "onNothingSelected: spinnerItem");
    }
});

继续阅读Android下拉控件Spinner的使用

Android 获取MAC地址

/**
 * 获取无线网络Mac地址
 *
 * @return
 */
private static String getWifiMac() {
    return readFile("/sys/class/net/wlan0/address").toUpperCase();
}

/**
 * 获取有线网络Mac地址
 *
 * @return
 */
private static String getLocalMac() {
    return readFile("/sys/class/net/eth0/address").toUpperCase();
}

/**
 * 读取文件内容
 *
 * @param filePath
 * @return
 */
private static String readFile(String filePath) {
    StringBuilder sb = new StringBuilder();
    try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
        String line;
        while ((line = reader.readLine()) != null) {
            if (sb.length() > 0) {
                sb.append("\n");
            }
            sb.append(line);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    return sb.toString();
}

PS:笔者是在定制安卓设备上面开发,用该方式获取Mac地址没问题。
PS2:手机上因为权限问题很可能获取不了Mac地址,请自行测试。
PS3:不过一般来说,手机上也不用获取有线网络的Mac地址才对。


参考链接:

Android 6.0获取MAC地址

Android获取Root权限和执行Shell脚本

音视频通信相关资料

Android视频直播库

造砖之路———局域网音视频开发的历程,基于android音视频p2p 传输技术


Android 视频通话(一)

Android局域网内的语音对讲


Android调用Jlibrtp库实现RTP发送数据

android硬编码h264数据,并使用rtp推送数据流,实现一个简单的直播-MediaCodec(一)

android硬编码h264数据,并使用rtp推送数据流,实现一个简单的直播-MediaCodec(二)