赞
踩
1. 屏幕适配
1.1 基本的概念
屏幕尺寸:斜对角线的长度,以寸为单位
分辨率:指的是屏幕的宽*高
像素密度,即每英寸的像素点,计算方式如下所示:
1.2 更改应用的图标
进入value-mipmap ,更改所有的ic_launcher的png图片(选择使用show in Exploer更改即可)
在此目录下把ic_launcher.xml的名字修改一下
进入manifest目录,把
<!-- android:roundIcon="@mipmap/ic_launcher_round"-->
注释掉
同时设置其他参数如下所示
android:icon="@mipmap/ic_launcher" --图标地址
android:label="@string/app_name" --应用名称
2. Fragment
2.1 定义
这个概念是Android3.0开始引入的。为的就是给大屏幕上更加动态和灵活的UI设计及提供支持。
一个Fragment可以堪称是一个Activity的一个布局模块,可以容纳某种层次结构的View和ViewGroup对象
2.2 流程
首先在主函数里面定义一个fragment单元,如下所示:
<fragment
android:id="@+id/fragment_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
接着在layout目录下建立一个fragment的xml文件并且取名为fragment_view.xml,在fragment里面添加一个textview,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="你好?"
android:id="@+id/tex1"/>
</LinearLayout>
既然有了xml文件,那么对应的.java程序就不可少,在同个包下面创建新的程序,取名为TextView_Fragment. 代码如下:
package com.test.fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; public class TextView_Fragment extends Fragment { @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_view,container,false); // 这里的路径就是fragment的xml路径 } }
最后再回到主函数java程式上来,添加一行代码到fregment即可即可,如下所示;
android:name="com.test.fragment.TextView_Fragment"
2.3 生命周期
三个状态:Resumed Paused Stopped,状态转换时的回调方法如下所示:
注意一下几点:
2.4 事件处理
Android的事件处理机制是由两种的:
下面给出方法一的代码
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.test.fragment"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".EventActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".MainActivity"> </activity> </application> </manifest>
package com.test.fragment; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.TextView; public class EventActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_event); } public void changeText(View view){ //首先需要获取变更的控件 TextView tv =findViewById(R.id.text_view); // 接着就可以变更控件的内容了 tv.setText(R.string.change); //设置标题 this.setTitle("这是新的标题"); } }
方法二的代码如下:
package com.test.fragment; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class EventActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_event); //首先需要找到这个按钮 Button btn =findViewById(R.id.btn); //当找到这个按钮的时候,就会触发监听,找到方法进行调用 btn.setOnClickListener(new myOnMyClickListener()); } public class myOnMyClickListener implements View.OnClickListener{ @Override public void onClick(View view) { //首先需要获取变更的控件 TextView tv =findViewById(R.id.text_view); // 接着就可以变更控件的内容了 tv.setText(R.string.change); //设置标题 EventActivity.this.setTitle("这是新的标题"); } }
也可替换成如下 不用写新的类了:
public class EventActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_event); //首先需要找到这个按钮 Button btn =findViewById(R.id.btn); //当找到这个按钮的时候,就会触发监听,找到方法进行调用 btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view){ //首先需要获取变更的控件 TextView tv = findViewById(R.id.text_view); // 接着就可以变更控件的内容了 tv.setText(R.string.change); //设置标题 EventActivity.this.setTitle("这是新的标题"); } }); } }
总结起来其步骤就是:
2.5 Fragment的动态添加
动态添加流程如下所示:
<LinearLayout
android:id="@+id/listFragment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
</LinearLayout>
<HorizontalScrollView
android:id="@+id/listFragment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
</HorizontalScrollView>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <ImageView android:id="@+id/image1" android:layout_width="150dp" android:layout_height="150dp" android:src="@drawable/go" android:padding="10dp"> </ImageView> <ImageView android:id="@+id/image2" android:layout_width="150dp" android:layout_height="150dp" android:src="@drawable/go2" android:padding="10dp"> </ImageView> </LinearLayout>
public class ListViewFragment extends Fragment {
@Override
//类的名称叫做ListViewFragment,继承的父类是Fragment,这都是在新建类的时候可以完成的
//然后添加onCreateView的方法,找到添加源的来源地和目的地就行了
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_listview,container,false);
}
}
package com.test.fragment; import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.FragmentManager; import android.os.Bundle; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //这里要用到fragmentManager这个方法,并且与新类ListViewFragment产生联系 FragmentManager fm= getSupportFragmentManager(); fm.beginTransaction().add(R.id.listFragment,new ListViewFragment()).commitNow(); } }
2.6 Fragment之间的通信
是有两种方法的:
3. 常用基本控件
Button
在Button上加图标,android:src=“drawable/button_icon”。注意此时是ImageButton
图标和文字都加上的时候:
android:text=“button”
android:drawableLeft=“drawable/buttton_icon”
ToggleButton 选中或者未选中时为两种状态
android:textOn="@string/On" //开关开时显示的文字
android:textOn="@string/Off" //开关关时显示的文字
Switch 同样有一个开或者关的文字,这是一个滑动开关
.isChecked //是否被选中
setText //设置文字提示
单选按钮 RadioButton
需要加一个RadioGroup
当单选按钮被选中的时候,可以获取这个按钮的内容
复选按钮 CheckBox
可以进行多选的按钮,默认是矩形。首先定义多选按钮,然后对每一个多选按钮进行事件监听setOnCheckedChangeListener,通过isChecked来判断选项是否被选中,作出相应的事件响应。
xml代码如下所示:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:id="@+id/text_box" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="20sp" android:text="请选择你喜欢的运动"></TextView> <CheckBox android:id="@+id/sport1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="跑步" android:textSize="20sp" android:onClick="onCheckBoxClicked"></CheckBox> <CheckBox android:id="@+id/sport2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="游泳" android:textSize="20sp" android:onClick="onCheckBoxClicked"></CheckBox> <CheckBox android:id="@+id/sport3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="跳绳" android:textSize="20sp" android:onClick="onCheckBoxClicked"></CheckBox> <TextView android:id="@+id/text_sport" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp"/> <Button android:id="@+id/btn1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="提交" android:textSize="20sp"/> </LinearLayout>
package com.an.myapplication; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.CheckBox; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { TextView tv; Button btn_sport; CheckBox cb1; CheckBox cb2; CheckBox cb3; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv= findViewById(R.id.text_sport); cb1=findViewById(R.id.sport1); cb2=findViewById(R.id.sport2); cb3=findViewById(R.id.sport3); btn_sport=findViewById(R.id.btn1); btn_sport.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String str=""; if(cb1.isChecked()) str=str+"\n"+cb1.getText(); if(cb1.isChecked()) str=str+"\n"+cb1.getText(); if(cb1.isChecked()) str=str+"\n"+cb1.getText(); tv.setText("你选择了:"+str); } }); } public void onCheckBoxClicked(View view){ Toast.makeText(this,((CheckBox) view).getText(),Toast.LENGTH_SHORT).show(); } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。