今天开始正式的Android的学习。Android的开发步骤大体分为两个步骤 一、写页面布局 二、写业务逻辑。对于布局,Android常用的四大布局分别为LinearLayout、RelativeLayout、FrameLayout、TableLayouts,让我们分别来看一下这四大布局。
1.线性布局 LinearLayout
orientation:方向;vertical,垂直;horizontal,水平
gravity:对齐方式,子控件相对于当前控件的对齐方式
layout_gravity:当前控件相对于父控件的对齐方式
margin:当前控件相对于四周的间距。
padding:当前控件中的子控件相对于当前控件四周的间距。
2.相对布局 RelativeLayout 都是从左上角开始布局,要控制位置需要设置每个控件相对于其他控件的位置。
layout_below:位于哪个控件的下方
layout_above:位于哪个控件的上方
layout_toLeftOf:指定当前控件位于哪个控件的左边
layout_toRightOf:指定当前控件位于哪个控件的右边
layout_alignParentRight:当前控件基于父窗体的右边(父窗体里面的右边,属于父窗体)
layout_alignParentLeft 当前控件位于父窗体的左边
layout_alignParentBottom 当前控件位于父窗体的下面
layout_alignParentTop 当前控件位于父窗体的上面
layout_centerHorizontal:水平居中
layout_centerVertical:垂直居中
layout_centerInParent:位于父窗体的中间
android:layout_weight="1" 表示当前控件所占的比重。即如果一个父窗体内如果有两个这样的控件,他们的weight都为1,则他们分别占父窗体的1/2。如果是水平方向上的,则他们的宽这时通常设为0,竖直方向上高设置为0。
3.帧布局 FrameLayout
帧布局中的子控件都是一层一层向上叠加的。
4.表格布局 TableLayouts
TableLayout 中一个TableRow代表一行,TableRow中的一个控件代表一列
另外还有一种基本被废弃的绝对布局。利用这些布局就可以搭建精美的页面了。
写完布局基本就可以写业务逻辑了,通常通过一个在布局文件中设置的id去找到空间对象,然后对其设置一些事件或意图去实现一些功能。下面是一个简单的通过点击按钮实现拨打电话功能的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找到需要使用的控件
final EditText et_number = (EditText) findViewById(R.id.et_number);
Button bt_callphone = (Button) findViewById(R.id.bt_callphone);
//设置按钮点击事件
assert bt_callphone != null;
bt_callphone.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//获取用户输入的电话号码
assert et_number != null;
String number = et_number.getText().toString().trim();
//拨打电话号码
Intent intent = new Intent();//创建一个意图对象
intent.setAction(Intent.ACTION_CALL);//设置意图对象的动作
intent.setData(Uri.parse("tel:"+number));//设置意图对象的数据(设置拨打电话的号码)
startActivity(intent);//去启动一个意图对象
主要步骤为:
1.通过布局文件中对控件配置的id,在activity中可以获取控件的对象,Edittext Button
findViewById(int id);
2.为按钮设置点击事件
bt_callphone.setOnclickListener( OnclickListener listener);
3.在点击事件的onclick方法中,找到用户输入的电话号码
4.创建一个Intent对象
Intent intent = new Intent();
5.为Intent对象设置一个打电话的动作
intent.setAciton(Intent.ACTION_CALL);
6.位Intent对象设置一个数据
intent.setData(Uri.parser("tel:"+number));
7.启动Intent对象
startActivity(intent);
8.在androidmanifest.xml中设置一个打电话的权限
<uses-permission android:name="android.permission.CALL_PHONE"/>
注意一定不要忘了去到androidmanifest.xml文件中设置权限。
二、按钮点击事件的设置
1.匿名内部类的方式(即上面使用的方式)。对于设置单个按钮的点击事件比较简单,但当事件增多时则较为繁琐。
2. 创建一个类实现onclickListener,实现onclick方法,设置控件点击事件时传一个类的对象。代码如下:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button bt_callphone = (Button) findViewById(R.id.bt_callphone);
bt_callphone.setOnClickListener(new MyOnclickListener());
class MyOnclickListener implements OnClickListener{
@Override
public void onClick(View v) {
callphone();
3. 让当前类实现onclickListener,设置控件点击事件时传一个this。这种方式适合按钮比较多的情况,一般在公司采用该方式。(常用)
public class MainActivity extends Activity implements OnClickListener {
private EditText et_number;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_number = (EditText) findViewById(R.id.et_number);
Button button2 = (Button) findViewById(R.id.button2);
Button button3 = (Button) findViewById(R.id.button3);
Button button4 = (Button) findViewById(R.id.button4);
//因为本类实现了OnClickListener接口,所以可以直接传this
button2.setOnClickListener(this);
button3.setOnClickListener(this);
button4.setOnClickListener(this);
//重写onClick方法
@Override
public void onClick(View v) {
int id = v.getId();
switch (id) {
case R.id.button1:
System.out.println("第一个按钮被点击了");
break;
case R.id.button2:
System.out.println("第二个按钮被点击了");
break;
case R.id.button3:
System.out.println("第三个按钮被点击了");
break;
case R.id.button4:
Toast toast = Toast.makeText(this, "您点击了第四个按钮", Toast.LENGTH_SHORT);
toast.show();
break;
default:
break;
4. 在布局文件中为控件添加一个onclick属性,在布局对应的Activity中写一个以onclick属性值为名的方法,要public,传一个View类型的参数。比较适合做简单的测试。(测试用)
布局文件中代码:
<Button
android:onClick="callPhoneClick"
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/bt_callphone"
android:layout_below="@+id/bt_callphone"
android:layout_marginTop="51dp"
android:text="Button" />
java代码:
public void callPhoneClick(View v){
System.out.println("按钮被点击了");
一、Activity生命周期
1.1实验内容
重写MainActivity中的onCreate,onStart,onResume,onPause,onStop,onDestroy,onRestart方法。为每个方法增添一行调试输出,观察Activity的生命周期。
1.2实验步骤
(1)新建Android项目ActivityLifeCycle,重写MainActivity中的onCreate 、onStart、 onResume、 onPause、 onStop、 onDestroy和 onRestart方
1)表示用户交互的一个界面(活动),每一个activity对应一个界面
2)是所有View的容器:button,textview,imageview;我们在界面上看到的都是一个个的view
3)有个ActivityManager的管理服务类,用于维护与管理Activity的启动与销毁;
Activity启动时,...
What is Magic Button?
It's a new button in android that hypnotizes the user and make him give you a lot of money!!!
Ok, just kidding, this is not so magic yet... but it's a cute button.
Ok it's cute, But how can I use
You just need to add this in your layout.
How about click event?
In magic button, the click event will work only in second click and you can set this event with:
magicButton.setMagicButtonClickListener(new View.OnClickListener() {
@Override
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="点击跳转" />
2、然后在关联的类中声明一个私有button名称,如:
android:id="@+id/rl1"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android...
Android常见的5个布局,我想大家一定不会陌生。LinearLayout、RelativeLayout和FrameLayout也是使用频率较高的布局方式,做Android开发的一定使用过。
传统的5种布局方式:
LinearLayout
RelativeLayout
FrameLayout
GridLayout
TableLayout
不过我的问题并不是问面试者如何使用这些基础的布局,而是要看面试者怎么解决布局嵌套(影响性能)和屏幕适配问题。
android:id="@+id/myButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click Me" />
2. 接下来,在你的Activity或Fragment的Java代码中找到该按钮,并设置点击事件监听器。在`onCreate`方法里的`setContentView`之后,添加以下代码:
```java
Button myButton = findViewById(R.id.myButton);
myButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 在这里处理按钮点击事件的逻辑
// 可以执行任何你想要的操作
3. 在`onClick`方法中,你可以添加任何你想要执行的操作,例如显示一个Toast消息、启动另一个Activity等等。
这样,当用户点击按钮时,设置的点击事件监听器会被触发,并执行相应的操作。
pytorch报错RuntimeError: DataLoader worker (pid(s) 7872, 15356, 19144, 16296) exited unexpectedly
kaggle Santander Customer Transaction Prediction总结