目录

零散知识点

  • 另外如果你想禁止Android不跟随屏幕密度加载不同文件夹的资源,只需在AndroidManifest.xml文件中添android:anyDensity=”false”字段即可。
  • layout:该目录下存放的就是我们的布局文件,另外在一些特定的机型上,我们做屏幕适配,比如480*320这样的手机,我们会另外创建一套布局,就行:layout-480x320这样的文件夹!
  • android:id=”@+id/activity_main”:在R中添加id
  • android:layout_width=”match_parent”:width填充方式,有三个值warp_content:刚好填充内容的大小,fill_parent,match_parent:满屏填充

Java代码中使用资源

  • Java 文字:txtName.setText(getResources().getText(R.string.name));
  • 图片:imgIcon.setBackgroundDrawableResource(R.drawable.icon);
  • 颜色:txtName.setTextColor(getResouces().getColor(R.color.red));
  • 布局:setContentView(R.layout.main);
  • 控件:txtName = (TextView)findViewById(R.id.txt_name);

XML代码中使用

通过@xxx即可得到,比如这里获取文本和图片:

<TextView android:text="@string/hello_world" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background = "@drawable/img_back"/>

margin与padding的区别

初学者对于这两个属性可能会有一点混淆,这里区分下: 首先margin代表的是偏移,比如marginleft = "5dp"表示组件离容器左边缘偏移5dp; 而padding代表的则是填充,而填充的对象针对的是组件中的元素,比如TextView中的文字 比如为TextView设置paddingleft = "5dp",则是在组件里的元素的左边填充5dp的空间! margin针对的是容器中的组件,而padding针对的是组件中的元素,要区分开来! 

Android中有六大布局

分别是: LinearLayout(线性布局),RelativeLayout(相对布局),TableLayout(表格布局) FrameLayout(帧布局),AbsoluteLayout(绝对布局),GridLayout(网格布局) 

LinearLayout

RelativeLayout

TableLayout

FrameLayout

FrameLayout(帧布局)可以说是六大布局中最为简单的一个布局,这个布局直接在屏幕上开辟出一块空白的区域,当我们往里面添加控件的时候,会默认把他们放到这块区域的左上角,而这种布局方式却没有任何的定位方式,所以它应用的场景并不多;帧布局的大小由控件中最大的子控件决定,如果控件的大小一样大的话,那么同一时刻就只能看到最上面的那个组件!后续添加的控件会覆盖前一个!虽然默认会将控件放置在左上角,但是我们也可以通过layout_gravity属性,指定到其他的位置。<br />
FrameLayout的属性很少就两个<br />
前景图像:永远处于帧布局最上面,直接面对用户的图像,就是不会被覆盖的图片。<br />
  • 两个属性:
  • android:foreground:*设置改帧布局容器的前景图像
  • android:foregroundGravity:设置前景图像显示的位置

GridLayout

ConstraintLayout

相当于iOS的autoLayout。通过四个约束来完成布局,减少复杂界面的层级关系。

数据操作

map使用

    Map<String, Object> tmp = new HashMap<>();
           
    tmp.put(TITLE, example[0]);
    tmp.put(DESCRIPTION, example[1]);

list使用

 List<Map<String, Object>> testList = new ArrayList<>();
  testList.add(tmp);
 

activity 跳转

  • 跳转不需要参数时:
 
Intent intent = new Intent(this, SecondActivity.class);

startActivity(intent);
  • 跳转需要参数时(数据少时)
Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra("key","someValue");
startActivity(intent);
  • 跳转需要参数时(数据多时)
Intent intent = new Intent(A.this, B.class);  
  
/* 通过Bundle对象存储需要传递的数据 */  
Bundle bundle = new Bundle();  
/*字符、字符串、布尔、字节数组、浮点数等等,都可以传*/  
bundle.putString("Name", "feng88724");  
bundle.putBoolean("Ismale", true);  
  
/*把bundle对象assign给Intent*/  
intent.putExtras(bundle);  
  
startActivity(intent);  
  • 获取传递过来的数据
    /*获取Intent中的Bundle对象*/  
    Bundle bundle = this.getIntent().getExtras();  

点击去github下载AVAudioRecorderDemo

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!


hetaodie

Mobile development

简单,深入的研究移动客户端开发技术"