关于android中尺寸的获取,获取自定义属性值, 切换状态的标准写法

1、获取屏幕宽高。

方法1:

WindowManager wm = this.getWindowManager();
int displayheight = wm.getDefaultDisplay().getHeight();

方法2:

WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
  DisplayMetrics outMetrics = new DisplayMetrics();
  wm.getDefaultDisplay().getMetrics(outMetrics);
  mScreenWidth = outMetrics.widthPixels;

DisplayMetrics metrics = new DisplayMetrics();
  getWindowManager().getDefaultDisplay().getMetrics(metrics);

2.获取自定义属性值

/**
  * 当使用了自定义属性时,调用
  * @param context
  * @param attrs
  * @param defStyle
  */
 public SlideMenuView(Context context, AttributeSet attrs, int defStyle) {
  super(context, attrs, defStyle);
  // TODO Auto-generated constructor stub
  
  //获取我们定义的属性
  TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.SlidingMenuView,
    defStyle, 0);
  int n = a.getIndexCount();
  for(int i=0; i<n; i++){
   int attr = a.getIndex(i);
   switch (attr) {
   case R.styleable.SlidingMenuView_rightPadding:
    mMenuRightPadding = a.getDimensionPixelOffset(attr,
      (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,100,
      context.getResources().getDisplayMetrics()));
    break;
   default:
    break;
   }
  }
  a.recycle();
  
  
  WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
  DisplayMetrics outMetrics = new DisplayMetrics();
  wm.getDefaultDisplay().getMetrics(outMetrics);
  mScreenWidth = outMetrics.widthPixels;
  
  /*//将dp转为px
  mMenuRightPadding = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,100,
    context.getResources().getDisplayMetrics());*/
 }

其中,R.styleable.SlidingMenuView指的是attr.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <attr name="rightPadding" format="dimension">
    </attr>
    
    <declare-styleable name="SlidingMenuView">
        <attr name="rightPadding"/>
 </declare-styleable>
</resources>

3.切换状态的标准写法

/**

  * 打开菜单

  */

 private void openMenu(){

  if(isOpen) return; 

  this.smoothScrollTo(0, 0);

  isOpen = true;

 }

 

 /**

  * 关闭菜单

  */

 private void closeMenu(){

  if(!isOpen) return;

  this.smoothScrollTo(mMenuWidth, 0);

  isOpen = false;

 }

 

 /**

  * 切换菜单

  */

 public void toggle(){

  if(isOpen){

   closeMenu();

  }else{

   openMenu();

  }

 }

 4。Android中获取系统的日期

注意:DateUtils工具类在String android.text.format.DateUtils.formatDateTime(Context context, long millis, int flags)中,只可以在Android中。

String label = DateUtils.formatDateTime(MainActivity.this,

    System.currentTimeMillis(), DateUtils.FORMAT_SHOW_TIME

      | DateUtils.FORMAT_SHOW_DATE

      | DateUtils.FORMAT_ABBREV_ALL);

结果为:

01-30 16:38:13.681: I/System.out(24046): 1月 30 日 16:38

转载于:https://my.oschina.net/u/660536/blog/369411

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值