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
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:显示在区域中,不增加,以半透明的形式存在