Android新组件应用

  1. CheckedTextView替代LineaLayout + TextView + ImageView 构造单选项

  2. Chronometer替代RxJava.interval + TextView

  3. StackView类似Android的多任务的布局

  4. QuickContactBadge 图片,点击会自动链接通讯录

  5. Space代替margin,因为onDraw()方法为空,所以不会渲染,包括事件处理都无效

  6. TextClock时间显示

  7. ToggleButton配合android:button="@drawable/sel"可以实现Switch效果

    //去除右下角小三角图标
    quickContactBadge.assignContactFromPhone("13012345678", false)
    val f = quickContactBadge::class.java.getDeclaredField("mOverlay")
    f.isAccessible = true
    f.set(quickContactBadge, null)
    
  8. TextSwitcher替代ViewFlipper实现滚动条效果

    textSwitcher.setFactory {
        val tv = TextView(this@MainActivity)
        tv.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16.0f)
        tv.setTextColor(Color.RED)
        return@setFactory tv
    }
    textSwitcher.inAnimation = AnimationUtils.loadAnimation(this, R.anim.anim_in);
    textSwitcher.outAnimation = AnimationUtils.loadAnimation(this, R.anim.anim_out);
    Observable.interval(1000L, 3000L, TimeUnit.MILLISECONDS)
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe {
                textSwitcher.setText((Random().nextInt()).toString())
            }
    

    anim_in:

    <set xmlns:android="http://schemas.android.com/apk/res/android"
         android:fillAfter="true"
         android:shareInterpolator="false"
         android:zAdjustment="top">
        <translate
            android:duration="3000"
            android:fromYDelta="100%p"
            android:toYDelta="0"/>
    </set>
    

    anim_out:

    <set xmlns:android="http://schemas.android.com/apk/res/android"
         android:fillAfter="true"
         android:shareInterpolator="false"
         android:zAdjustment="top">
        <translate
            android:duration="3000"
            android:fromYDelta="0"
            android:toYDelta="-100%p"/>
    </set>
    
  9. PopupMenu类似QQ的右上角"+"效果

    PopupMenu popupMenu = new PopupMenu(Main8Activity.this, view); //view:PopupMenu绑定的view,一般绑定在触发事件按钮
    popupMenu.getMenuInflater().inflate(R.menu.popup, popupMenu.getMenu()); //添加menu资源 
    // 或者popupMenu.inflate(R.menu.popup);
    popupMenu.setOnMenuItemClickListener(...); //点击事件
    popupMenu.setGravity(Gravity.END); //设置显示的位置
    popupMenu.show();
    

    需要创建一个menu文件

    在res/menu 文件夹下创建一个menu文件,此处menu文件名popup,在inflate方法中引用设置该menu文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值