Transitioning Controllers / Views
在iOS中我们使用segues、 pushViewController、 presentController 进行不同视图间的切换。在Android中,我们则用一个叫Intent的组件。
你可以轻松地使用intent去创建一个新的Activity,甚至是传递一些数据给新创建的Activity。
public void onItemClick(...) { |
Intent i = new Intent(getBaseContext(), MyActivity. class ); |
i.putExtra( "row" , position); |
在新创建的Activity(如上所示的MyActivty)中,你可以以这样方式提取之前Activity传递的数据。
protected void onCreate(Bundle savedInstanceState) { |
super .onCreate(savedInstanceState); |
setContentView(R.layout.activity_mine); |
Bundle extras = getIntent().getExtras(); |
int row = extras.getInt( "row" ); |
你也可以使用Intent去触发一些东西,例如:分享页面。
1 | Intent sendIntent = new Intent(); |
2 | sendIntent.setAction(Intent.ACTION_SEND); |
3 | sendIntent.putExtra(Intent.EXTRA_TEXT, "Share This" ); |
4 | sendIntent.setType( "text/plain" ); |
5 | startActivity(sendIntent); |
IBOutlet
如果你像我一样至少有一半时间会忘记连接IBOutlets,Android将是你的福音。
Android中每一个视图/组件都有一个唯一的ID,例如:
Android将会为这些ID自动生成一个叫做R的类(想了解更多R点击这里),你可以通过如下的方式来操作这个Button 对象。
1 | Button button = (Button)findViewById(R.id.myButton); |
Tag
为视图设置一个tag来查找信息是iOS开发者们常用的一个小技巧,例如:数组的偏移。而在Android你可以讲这个对象设置成tag,相当的有用。
UITableViewController / UITableViewDataSource / UITableViewCell
在Android中与UITableView相对应的是ListView。
与UITableViewDataSource大体上相对应的是ArrayAdapter:
1 | MyAdapter adapter = new MyAdapter( this , R.layout.listview_item_row); |
2 | listView.setAdapter(adapter); |
如上的例子中,listviewitemrow是布局中的一行,大体上相当于一个UITableViewCell。
Adapter通过getView来创建或复用不同的列。
你还可以设置表头:
1 | View header = getLayoutInflater().inflate(R.layout.listview_header_row, null ); |
2 | listView.addHeaderView(header); |
网上有大把相关的好教程,例如这个。
Images / Resources
自从Asset Catalogues在iOS出现后,对于图片的处理就轻松了很多,而且只需要应付retina和非retina屏幕即可(除非你还有专门为iPad使用的图片)。
为了适应不同Android设备的分辨率,你需要提供四套不同尺寸的图片。
它们分别是:mdpi (中等质量)、hdpi (高质量)、 xhdpi (超高质量), xxhdpi (宇宙无敌高质量)。个人很期待xxhdpi画质的出现。
当你在Android Studio里创建工程的时候,它会为你所提供的应用图标自动生成四种不同尺寸的图标。这可把设计师们吓的心肝儿发颤了吧,别担心,稍后它们还是可以被完美的图标所替换的。
所以,基本的理念就是对应不同的屏幕分辨率创建不同的图片,并用与之相对应的屏幕分辨率的名字命名后,放入正确的文件夹中,之后的事情就交给Android去处理吧。
|