Android

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 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,804评论 25 709
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 13,050评论 2 59
  • 1.什么是Activity?问的不太多,说点有深度的 四大组件之一,一般的,一个用户交互界面对应一个activit...
    JoonyLee阅读 5,776评论 2 51
  • 21:54,接到岳同学的来电:“妈妈,你在哪里?你来接我吧!” “哦,亲爱的,我在家里等你回家。你自己回来吧!”我...
    蓝溪碧潭阅读 542评论 0 4
  • 我爱你北京 爱我初来时你秋天的样子 爱你八达岭夜晚凉凉的军营 爱一二年冬天十年不遇的大雪 我爱你北京 爱你陪我走过...
    端端盘子写写诗阅读 151评论 0 0