component: 

  • EditText
    //去掉自带下划线android:background="@null"//Hint字体效果android:textColor="#FFF"android:textColorHint="#C2C2C2"android:textCursorDrawable="@null"//光标从右边/中间输入//因为gravity代表了光标的位置,所以就不能通过gravity来控制Hint在EditView中的位置了,只能用layout_marginTop曲线救国android:gravity="right/center" 或者 editText.setGravity(Gravity.RIGHT/CENTER);
  • TextView
    //跑马灯效果android:singleLine="true" android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever"/>textView.setSelected(true);
  • 自定义AlertDialog
    LayoutInflater inflater = LayoutInflater.from(this);View v = inflater.inflate(R.layout.my_dialog, null);AlertDialog.Builder builder= new AlertDialog.Builder(this,R.style.MyDialogStyle);final Dialog dialog= builder.create();dialog.show();dialog.getWindow().setContentView(v); //自定义布局要在dialog.show()的后面//dialog.getWindow().setGravity(Gravity.CENTER); //可以设置显示的位置,默认居中Button btn= v.findViewById(R.id.btn);btn.setOnClickListener(...);
  • ScrollingTabsView : 左右滑动切换标签界面
  • NavigationView :
    //修改menu默认选中子项nv.getMenu().getItem(0).setChecked(true);//修改menu子项颜色//新建res/color/selector_nv.xml, 注意一定要在color文件夹下//注意排序很关键,因为它们是按顺序被评估的,所以default才在最下面<?xml version="1.0" encoding="utf-8"?>                                Resources resource = (Resources)getBaseContext().getResources();ColorStateList csl = resource.getColorStateList(R.color.selector_nv);nv.setItemTextColor(csl);
  • SearchView : 更详细可以看 MaterialDesign之SearchView全面解锁
    //不自动弹出输入法sv.clearFocus();//searchView样式sv.onActionViewExpanded(); //区别不大, 不用多看Class<?> c = sv.getClass();    try {        Field f=c.getDeclaredField("mSearchPlate");//通过反射,获得类对象的一个属性对象        f.setAccessible(true);//设置此私有属性是可访问的        View v=(View) f.get(sv);//获得属性的值        v.setBackgroundResource(R.drawable.shape_color_grey);//设置此view的背景    } catch (Exception e) {        e.printStackTrace();    }        //搜索事件,返回值默认为false, 有操作则改成truesv.setOnQueryTextListener(new SearchView.OnQueryTextListener() {    //输入内容后,点击[搜索]才开始搜索    @Override    public boolean onQueryTextSubmit(String s) { return false; }                //搜索框有内容后就自动搜索    @Override    public boolean onQueryTextChange(String s) {return false; }});
    //内嵌在toolBar中的SearchView

     

  •  

 

Style: 

  • dp / px / dpi

若一个屏幕分辨率是1920*1080

则该屏幕长为1920px,宽为1080px,对角线为√(1080*1080+1920*1920)≈  2203px

如果屏幕尺寸为5寸,则dpi为2203px / 5 ≈ 441dpi

则屏幕长为1920/(441/160)= 697dp,宽为1080/(441/160)= 392dp

  • dpi & ppi:每英寸容纳像素数量,即像素密度(android叫dpi,ios叫ppi(pixels per inch),一个意思)

iPhone(6~7) 宽为 2.3 英寸,高为 4.1 英寸,根据勾股定理得出这块屏幕的尺寸(屏幕对角线距离)是 4.7 英寸。iPhone(6~7) 屏幕宽(每行)有 750 个像素(发光点),高(每竖)有 1334 颗像素(发光点)。                                       

可以知道这台iPhone的分辨率为1334*750,像素密度为1334/4.1 = 750/2.3 ≈ 326ppi 

补充:

脱离屏幕的大小讨论分辨率是没有意义的

现在有一只手机和一台电视,他们都是 1080P 分辨率,拥有 1920 x 1080 个总像素点。但是你觉得手机屏幕好像清楚的不得了,而电视屏幕凑近看全是类似马赛克的点。这是因为因为当屏幕尺寸被放大了,倘若分辨率不变,那么每一颗像素也必须得变大。于是就会造成这样的问题:一个像素点,在你的手机上只有一粒灰尘大小,而在电视上,可能大过一粒米。

所以光看屏幕的分辨率对于设计师来说是不具备多少实际意义的,通过分辨率计算得出的像素密度(PPI)才是设计师要关心的问题,我们通过屏幕分辨率和屏幕尺寸就能计算出屏幕的像素密度的。

 

  • TextViewStyle
    // 项目中出现过个问题, 所有的text都是灰色, 然后用以下方法解决的在style里面添加:@style/MyTextViewStyle
  • ImageView
    tint属性可以将图片整体换颜色,常用在同样形状但是不同颜色的btn上
  • ActionBarSize
    定制ActionBar高度style.xml加入注意: 需要miniSDKVersions>11, 或者新建一个valuse-vXX/style.xml, XX>11获取ActionBar高度TypedArray actionbarSizeTypedArray =                 context.obtainStyledAttributes(new int[] {android.R.attr.actionBarSize});float h = actionbarSizeTypedArray.getDimension(0, 0);
  • Color
    values新建colors.xml<?xml version="1.0" encoding="utf-8"?>    #ae5da1引用方式: @color/colorButtonBlue
    常见透明度值: (0->100, 越来越看不见)0%=FF    5%=F2    10%=E5    15%=D8    20%=CC25%=BF    30%=B2    35%=A5    40%=99    45%=8c50%=7F    55%=72    60%=66    65%=59    70%=4c75%=3F    80%=33    85%=21    90%=19    95%=0c    100%=00使用方法:加到色值前, 如#FF222222,#59333333
  •  Shape 自定义形状
    //外部配置 //环的厚度    。。。//内部配置             //虚线宽度                                        //只用于矩形上设置圆角                
  •  Vector (SVG) 自定义圆形
      //填充色,不加属性默认为不填充 参数含义:M 24 24 (起始点)    A(代表要画弧)      10 10 (x, y 轴半径)0 (x轴旋转角度, 没懂)1 (0/1-小/大弧度) : 给定一个起终点和半径, 能画出2种弧. 优弧(1)和劣弧(0)0 (0/1-逆/顺时针)24  23.999 (弧的起终点不能是同一点, 因为同一点之间无法构成线)

 

四大组件

  • 自定义广播
    sendBroadcast(new Intent(getApplication(),MyBroadcastReceiver.class));//manifest添加
  •  

更多相关文章

  1. Android(安卓)RelativeLayout(相对布局)
  2. 详解Android中Drawable方法
  3. android:layout_width和android:width的区别
  4. android 开发 xml绘制Selector 一 基础篇
  5. android在布局中图片大小自适应
  6. Android中shape的使用
  7. 如何用android:layout_weight弄个满意的比例
  8. Android(安卓)Selector 与 Shape 基本用法
  9. android那些事——android的成长

随机推荐

  1. 游戏服务器和Web服务器的区别
  2. Authing 客户故事|句子互动
  3. 工具之_vim
  4. vim 常用操作
  5. 中国学生发现1000行Python代码脚本中的bu
  6. .NET 平台负责人 Scott Hunter 专访:.NET
  7. 兼容性测试为什么非做不可?| 对话优测技术
  8. 谷歌的软件工程文化:激发创造力、鼓励自主
  9. C语言中的操作符
  10. Microsoft Ignite 2021:与Microsoft Teams