zoukankan      html  css  js  c++  java
  • 【android】开发笔记系列UI篇

     弹出View添加阴影效果

    系统自带就有,在android studio上直接写入背景颜色

    android:background="@android:drawable/dialog_holo_light_frame"

     值得注意的是,这种阴影的尺寸,左右间隙之和是activity_horizontal_margin;上下:activity_vertical_margin

    因此如果是对弹框尺寸比较敏感的(比如宽度和高度是手动计算的),在用了阴影背景之后记得给宽度或高度加上,上面一个margin的作为补偿哦。

    四种样式供参考,2、3最常用

    如何手动触发View的OnDraw事件

    在UI线程,调用View的invalidate()方法。

    非UI线程,调用View的postInvalidate()方法。

    View的OnLongClickListener事件,返回true或者false的意思

    返回true,表示点击事件,由我托管了,就不再往下传递了

    返回false,表示执行了LongClick,还要再继续往下传递

    颜色过渡动画

    int colorFrom = Color.RED;
    int colorTo = Color.GREEN;
    int duration = 1000;
    ObjectAnimator.ofObject(targetView, "backgroundColor", new ArgbEvaluator(), colorFrom, colorTo)
        .setDuration(duration)
        .start();

    ListView布局

    1:ListView的Item元素是没法使用layout_margin属性的。(可以使用recyclerView代替)

    2:变通的办法是把分割线设置为透明,并且拉伸分割线的高度。达到item之间间距的效果。

      android:divider="@null"
      android:dividerHeight="14dp"

    3:ListView设置marginTop会导致一段空白区域,滚动的item在此区域里不可见,解决办法是使用padding,并通知ListView在padding的区域里面绘制Item

      android:paddingBottom="16dp"
      android:paddingTop="16dp" 
      android:clipToPadding="false"
      

    TextView限制行数,超出以"..."结尾

    如:限制三行,超出末尾的地方用...代替

     android:lines="3"
     android:ellipsize="end"

    TextView行高

    如:每行之间额外增加6sp单位的高度

    android:lineSpacingExtra="6sp"

    TextView换行

    代码中用 就可以了

    如果数据内容要被下个步骤html转义

    那么直接使用<br/>

    Text解析html字符

     比如 ’  符号,我们从服务端获取的数据是&#39;

    用安卓提供的方法就能把这些数据转义回html

     .setText(Html.fromHtml("要解析的html脚本"));

    TextView代码设置尺寸

    1:尺寸写在dimen.xml文件里,只能获取px尺寸,比如

    float mCategoryTextSize = getResources().getDimensionPixelSize(R.dimen.circle_category_item_text_size);
    文本对象.setTextSize(TypedValue.COMPLEX_UNIT_PX, mCategoryTextSize);

    2:直接写sp、dp等尺寸

    文本对象.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18);

    TextView跑马灯

    textView原生就支持跑马灯效果,只要加入以下5个属性即可

            android:ellipsize="marquee"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:marqueeRepeatLimit="marquee_forever"
            android:singleLine="true"

    textView一旦失去了焦点,就不会再滚动,此时调用textView或者父容器的RequestFocus(),可以让它继续跑起来

    Canvas绘矩形图

    在onDraw方法里,一些注意的地方

    //实心用Fill,空心用STROKE
    mPaint.setStyle(Paint.Style.FILL);
    
    //Y轴是从上往下递增的,这个注意哦
    canvas.drawRect(左上x, 左上y, 右下x, 右下y, 画笔对象);

    弹出日历窗体

    //1:调用 
    showDialog(DIALOG_DATE_PICKER);
    
    //2:实现
      @Override
        protected Dialog onCreateDialog(int id) {
            switch (id) {
                case DIALOG_DATE_PICKER:
                    Calendar calendar = Calendar.getInstance();
                    DatePickerDialog pickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
                        @Override
                        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                            mEndYear = year;
                            mEndMonth = monthOfYear + 1;
                            mEndDay = dayOfMonth;
                            tvSetEndTime.setText(String.format("%d年%d月%d日", mEndYear, mEndMonth, mEndDay));
                        }
                    }, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
    
                    //如果不能选择比当前日期更早的,需要-1秒,否则报错
                    pickerDialog.getDatePicker().setMinDate(new Date().getTime() - 1000L);
                    return pickerDialog;
            }
            return null;
        }

    在style中使用自定义属性

    1:添加xmlns:android

    2:在自定义属性前面添加包名,在AndroidManifest.xml的package属性找到

    tips:不适合公共模块,会报编译失败,比如app模块就可以

    <resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="orange_tabLayout">
            <item name="android:layout_width">match_parent</item>
            <item name="android:layout_height">@dimen/md_tab_bar_height</item>
            <item name="android:background">@color/orange_dark</item>
            <item name="包名:text_normal_color">@color/red_darkest</item>
        </style>
    </resources>
  • 相关阅读:
    Qt编写控件属性设计器12-用户属性
    C#中通过三边长判断三角形类型(三角形测试用例)
    C#中通过Selenium定位<a>标签的问题
    SharePoint自动化系列——Manage "Site Subscriptions" using PowerShell
    SharePoint API测试系列——Records.BypassLocks测试
    SharePoint API测试系列——对Recorded Item做OM操作(委托的妙用)
    放松时刻——C#分割字符串
    链表——PowerShell版
    栈——PowerShell版
    队列——PowerShell版
  • 原文地址:https://www.cnblogs.com/kimmy/p/4615807.html
Copyright © 2011-2022 走看看