Android

作者: Puny丶微芒 | 来源:发表于2018-11-12 17:07 被阅读0次

    1.LayoutInflater

    动态加载资源布局,加载自定义组件等

    /*获取该组件*/
    View view = LayoutInflater.from(MainActivity.this)
    .inflate(R.layout.activity_my_grid_layout,null);
    /*获取主布局文件*/
     LinearLayout lin=  findViewById(R.id.main_layout);
    /*设置动态加载的组件垂直间距为30dp*/
    
    LinearLayout.LayoutParams lp = 
    new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    lp.setMargins(0,30,0,0);
    view.setLayoutParams(lp);
    
    /*添加组件*/
    lin.addView(view);
    

    2.Notification

    /*通过NotificationCampat.Builder创建通知,创建完成后通过该类下的builder方法实例化为notification对象*/
    NotificationCompat.Builder notification = new NotificationCompat.Builder(MainActivity.this,"default")
                            .setSmallIcon(R.drawable.notification)
                            .setContentTitle("test")
                            .setContentText("简单的通知");
    /*获取通知管理器对象,需从系统的服务中获取*/
     NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
    /*通过该管理器发送通知,参数为Notification对象*/
     notificationManager.notify(0,notification.build());
    

    3.PendingIntent

    用于远程服务通信、通知、闹铃等,须在下拉状态条下出发,单机Notification跳转并启动到某个Activity中

    //构建一个intent
    Intent resultIntent =new Intent(MainActivity.this,ResaultActivity.class);
    
    //封装intent
    PendingIntent resultPendingIntent = PendingIntent.getActivity(MainActivity.this,0,resultIntent,PendingIntent.FLAG_UPDATE_CURRENT)
    
    
    //notification通过NotificationCampat.Builder创建
    //Supply a PendingIntent to be sent when the notification is clicked.
    notification.setConentIntent(resultPendingIntent)
    

    Intent

    1.putExtra方式

    //发送
    intent.putExtra("key","value")
    startActivity(intent);
    //接收
    getIntent.getStringExtra("key")
    
    //传递对象数组
    //把list强制类型转换成Serializable类型
    intent.putExtra("objectList", (Serializable) list);
    startActivity(intent);
    //接收
    
    List<Object> objList = (List<Object>) getIntent().getSerializableExtra(
    "objectList");
    

    2.bundle传递简单值

    //发送
    Bundle bundle = new Bundle();
    bundle.putString("key1","value");
    bundle.putInt("key2",11);
    intent.putExtras(bundle);
    startActivity(intent);
    //接收
    Bundle bundle= getIntent().getExtras();
    String name = bundle.getString("key1")
    Int  n= bundle.getInt("key2")
    

    3.主窗体与子窗体双向传递数据

    向子窗体传递

    Intent mIntent= new Intent(MainActivity.this,OtherActivity.class);
    mIntent.putExtra("key1","value");
    startActivityForResult(mIntnet,100);
    

    子窗体返回数据

    Intent ointent= new Intent();
    ointent.putExtra("key2","result");
    //返回数据
    setResult(101,intent);
    //结束当前Activity生命,返回主窗体
    finish();
    

    主窗体重写onActivityResult方法接受返回数据

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode==100&&resultCode==101){
        //.........
           data.getStringExtra("result")
         }
    }
    

    4.startActivity与startActivityForResult的区别

    startActivity( ) 仅仅是跳转到目标页面,若是想跳回当前页面,则必须再使用一次startActivity( )。

    startActivityForResult( ) 可以一次性完成这项任务,当程序执行到这段代码的时候,假若从T1Activity跳转到下一个Text2Activity,

    而当这个Text2Activity调用了finish()方法以后,程序会自动跳转回T1Activity,并调用前一个T1Activity中的onActivityResult( )方法。

    要注意,如果在startActivityForResult跳转到的Activity里面设置setResult,结果并不会马上返回给parent的Activity,只有当前Activity被finish,结果才会被发送给parent的onActivityResult去处理

    5.隐式匹配

    首先要匹配Intent的几项值:Action,Category(一般不用设置),Data/Type,Component(即为Test.class,设置以后就成了显示匹配)
    例:
    打开网页

    Uri uri= Uri.parse("http://www.baidu.com");
    
     Intent intent = new Intent();
      intent.setAction(Intent.ACTION_VIEW);
      intent.setData(uri);
      //构造方法定义
      // Intent intent = new Intent(Intent.ACTION_VIEW,uri);
    
      startActivity(intent);
    

    拨打电话

    Uri uri = new Uri.prase("tel:10086");
    Intent intent = new Intent(Intent.ACTION_DIAL,uri)
    startActivity(intent);
    

    ListView

    设置拖动背景色

      android:cacheColorHint
    

    设置item间距

      android:dividerHeight
    

    设置item之间的背景或颜色

      android:divide
    

    设置阴影,值为none 时无

      android:fadingEdge
    

    设置是否显示滚动条,值为horizontal|verticalhi显示滚动条,并会自动显示和隐藏

      android:scrollbars="horizontal|none"
    

    设置快速滚动效果,在快速滚动时会出现一个小方块的快速滚动效果,自动隐藏和显示

      android:fastScrollEnabled="true"
    

    设置scrollbar样式

      android:scrollbarStyle="outsideInset"
    
    • outsideInset:在View边缘增加了View的padding
    • outsideOverlay:显示在视图边缘,不增加view的padding,该scrollbar将被半透明覆盖
    • insideInset:显示在padding区域中,增加了控件的padding区域,不会和视图内容重叠/
    • insideOverlay:显示在区域中,不增加,以半透明的形式存在

    相关文章

      网友评论

          本文标题:Android

          本文链接:https://www.haomeiwen.com/subject/lfpcfqtx.html