一些知识
Textview
TextView中有下述几个属性:
- id:为TextView设置一个组件id,根据id,我们可以在Java代码中通过findViewById()的方法获取到该对象,然后进行相关属性的设置,又或者使用RelativeLayout时,参考组件用的也是id!
- layout_width:组件的宽度,一般写:wrap_content或者match_parent(fill_parent),前者是控件显示的内容多大,控件就多大,而后者会填满该控件所在的父容器;当然也可以设置成特定的大小,比如我这里为了显示效果,设置成了200dp。
- layout_height:组件的高度,内容同上。
- gravity:设置控件中内容的对齐方向,TextView中是文字,ImageView中是图片等等。
- text:设置显示的文本内容,一般我们是把字符串写到string.xml文件中,然后通过@String/xxx取得对应的字符串内容的,这里为了方便我直接就写到""里,不建议这样写!!!
- textColor:设置字体颜色,同上,通过colors.xml资源来引用,别直接这样写!
- textStyle:设置字体风格,三个可选值:normal(无效果),bold(加粗),italic(斜体)
- textSize:字体大小,单位一般是用sp!
- background:控件的背景颜色,可以理解为填充整个控件的颜色,可以是图片哦!
startActivityForResult
大致可以理解为获取Activity的结果
Intent
intent相当于一个信道,putExtra相当于向里面传送一个名为参数一,内容为参数二的信息,接收方通过参数一相同的名称来接受参数二内容
- startActivity(Intent)/startActivityForResult(Intent):来启动一个Activity
- startService(Intent)/bindService(Intent):来启动一个Service
- sendBroadcast:发送广播到指定BroadcastReceiver
.显式Intent使用示例:
这个用得很多,直接就上例子了:
例子1:点击按钮返回Home界面: 运行效果图:
核心代码:
Intent it = new Intent(); it.setAction(Intent.ACTION_MAIN); it.addCategory(Intent.CATEGORY_HOME); startActivity(it);
例子2:点击按钮打开百度页面: 运行效果图:
核心代码:
Intent it = new Intent(); it.setAction(Intent.ACTION_VIEW); it.setData(Uri.parse("http://www.baidu.com")); startActivity(it);
在记事本中应用
在编辑页面当点击返回按钮的时候跳转到主页面
EditActivity:
public boolean onKeyDown(int keyCode, KeyEvent event){ if(keyCode == KeyEvent.KEYCODE_HOME){ return true; } else if(keyCode == KeyEvent.KEYCODE_BACK){ Intent intent = new Intent();//只用来传输信息,不用来跳转 intent.putExtra("input",et.getText().toString()); setResult(RESULT_OK,intent); finish(); return true; } return super.onKeyDown(keyCode,event); }
MainActivity中:
public void onClick(View view) { //测试btn //Log.d(TAG,"onClick:click"); Intent intent = new Intent(MainActivity.this,EditActivity.class);//从参数一跳转到参数二 //启动活动并获取结果 startActivityForResult(intent,0); //启动参数这样的一个跳转 }
开发过程
实现点击按钮界面的跳转
按钮:
跳转
先初始化按钮
super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //floatingbutton初始化 btn = ( FloatingActionButton)findViewById(R.id.fab); tv = findViewById(R.id.tv);
之后用一个setOnClickListener函数实现跳转
btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //测试btn //Log.d(TAG,"onClick:click"); Intent intent = new Intent(MainActivity.this,EditActivity.class);//从参数一跳转到参数二 //启动活动并获取结果 startActivityForResult(intent,0); //启动参数这样的一个跳转 } });
接受Edit输入的结果
MainActivity中:
//下面接受startActivityForResult结果 @Override //通过上面的Intent跳转到Edit,并通过下面的函数来对Edit的内容进行接收 protected void onActivityResult(int requestCode,int resultCode,Intent data){ super.onActivityResult(requestCode,resultCode,data); String edit = data.getStringExtra("input"); //Log.d(TAG,edit); tv.setText(edit); //输出输入的内容到Main屏幕中 }
EditActivity中:
//可以背一下下面格式 //功能:传回一个“input”的值来对应前面的getStringExtra public boolean onKeyDown(int keyCode, KeyEvent event){ if(keyCode == KeyEvent.KEYCODE_HOME){ return true; } else if(keyCode == KeyEvent.KEYCODE_BACK){ Intent intent = new Intent();//只用来传输信息,不用来跳转 intent.putExtra("input",et.getText().toString()); setResult(RESULT_OK,intent); finish(); return true; } return super.onKeyDown(keyCode,event); }
此时的完整代码:
MainActivity:
package com.example.note; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.ListView; import android.widget.TextView; import com.google.android.material.floatingactionbutton.FloatingActionButton; public class MainActivity extends AppCompatActivity { final String TAG = "tag"; FloatingActionButton btn; //后面再初始化 TextView tv; //笔记本的核心:ListView ListView lv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //floatingbutton初始化 btn = ( FloatingActionButton)findViewById(R.id.fab); tv = findViewById(R.id.tv); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //测试btn //Log.d(TAG,"onClick:click"); Intent intent = new Intent(MainActivity.this,EditActivity.class);//从参数一跳转到参数二 //启动活动并获取结果 startActivityForResult(intent,0); //启动参数这样的一个跳转 } }); } //下面接受startActivityForResult结果 @Override //通过上面的Intent跳转到Edit,并通过下面的函数来对Edit的内容进行接收 protected void onActivityResult(int requestCode,int resultCode,Intent data){ super.onActivityResult(requestCode,resultCode,data); String edit = data.getStringExtra("input"); //Log.d(TAG,edit); tv.setText(edit); //输出输入的内容到屏幕中 } }
EditActivity:
package com.example.note; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.KeyEvent; import android.widget.EditText; import android.content.Intent; import java.security.Key; public class EditActivity extends AppCompatActivity{ //实例化一个et EditText et; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.edit_layout); //定位输入好的内容 et=findViewById(R.id.et); } //可以背一下下面格式 //功能:传回一个“input”的值来对应前面的getStringExtra public boolean onKeyDown(int keyCode, KeyEvent event){ if(keyCode == KeyEvent.KEYCODE_HOME){ return true; } else if(keyCode == KeyEvent.KEYCODE_BACK){ Intent intent = new Intent();//只用来传输信息,不用来跳转 intent.putExtra("input",et.getText().toString()); setResult(RESULT_OK,intent); finish(); return true; } return super.onKeyDown(keyCode,event); } }
效果
点击按钮会跳转到edit界面,输入内容后按返回键会将内容显示在MainActivity界面中