<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android: orientation=”vertical”
//指定控件排列方向为竖直方向,horizontal为水平方向,
//如果为水平方向,控件的宽度不能是match_parent,这样单独一 //个控件会把整个水平方向占满。垂直方向同理,高度不能。
//如图看例子:
android:layout_width=”match_parent”//可以使用比例指定控件大小
//比如:
//使得这两个控件以1:1的比例平分屏幕宽度,即一个一半的宽度
//左上角对齐
//右上角对齐
//居中对齐
android:layout_height=”match_parent”>
<TxetView//界面显示控件
android:id=”@+id/text_view”//定义唯一标识符
android:layout_width=”match_parent”//宽度跟随父布局(就是手机屏幕宽度)
android:layout_height=”warp_content”//高度刚好够显示内容
android:gravity=”center”//显示内容居中对齐,其他还有top,bottom,left,right
//android:layout_gravity=”center”是控件在界面的布局中的对齐方式为居中
android:textSize=””24sp”//改变文字大小,sp是大小单位
android:textColor=”#00ff00”//改变文字颜色
android:text=”This is TextView” />//指定显示内容
<Button//按钮交互控件
android:=”@+id/button”//定义唯一标识符
android:layout_width=”match_parent”//宽度跟随父布局(就是手机屏幕宽度)
android:layout_height=”warp_content”//高度刚好够显示内容
android:Text=”Button”
android:textAllCaps=”false” /> //关闭英文字母自动大写切换,不关text显示”BUTTON”
<EditText//输入信息与编辑交互插件
android:=”@+id/edit_text”//定义唯一标识符
android:layout_width=”match_parent”//宽度跟随父布局(就是手机屏幕宽度)
android:layout_height=”warp_content”//高度刚好够显示内容
android:hint=”Type something here”//在输入框输入信息前的提示性语句
android:maxLines=”2”//使编辑框最多显示两行,虽然高度布局为刚好显示内容,但是如 //果输入过多会使界面不好看,所以使用这个限制最大行数。当输 //入超过两行就会往上滚动,而不会拉长
<ImageView//图片控件,图片放在res目录下新建一个“drawable-xhdpi”。
android:=”@+id/image_view”//定义唯一标识符
android:layout_width=”warp_content”//宽度刚好够显示内容
android:layout_height=”warp_content”//高度刚好够显示内容
android:src=”@drawable/img_1”/>//假设“drawable-xhdpi”已经有一张图片img_1。
<ProgressBar//进度条控件(默认圆形)
android:=”@+id/progress_bar”//定义唯一标识符
android:layout_width=”match_parent”//宽度跟随父布局(就是手机屏幕宽度)
android:layout_height=”warp_content”//高度刚好够显示内容
style=”?android:attr/progressBarStyleHorizontal”//指定为水平进度条
android:max=”100”/>//进度条最大值
<android.support.v7.widget.RecyclerView//比ListView更好的滑动显示信息控件,这个属于自定//义控件,所以在使用前必须打开app/build.gradle文件,在dependencies闭包中添加如下//内容:
// denpendencies{
compile fileTree(dir:’libs’,include:[‘*.jar*])
compile ‘com.android.support:appcompat-v7:24.2.1’
compile ‘com.android.support:recyclerview-v7:24.2.1’
testCompile ‘junit:junit:4.12’
// }
// 然后点击Sync Now同步
android:=”@+id/recycler_view”//定义唯一标识符
android:layout_width=”match_parent”//宽度跟随父布局(就是手机屏幕宽度)
android:layout_height=”match_parent”//高度跟随父布局(就是手机屏幕高度)
</LinearLayout>
具体使用代码:
方法一:使用匿名类在MainActivity中为Button添加监听器
Public class MainActivity extends AppCompatActivity
{
@Override
Protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(
new View.OnClickListener()
{
@Override
public void onClick(View v)//每当按下按钮则会执行
{
//在此处定义事件;
}
});
}
}
方法二:实现接口的方式实现监听器:
Public class MainActivity extends AppCompatActivity implements View.OnClickListner
{
@Override
Protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(this);
}
@Override
public void onClick(View v)//每当按下按钮则会执行
{
switch(v.getID())
{
case R.id.button:
//在此处定义事件;
break;
default:
break;
}
}
}
使用button来获取EditText的内容
Public class MainActivity extends AppCompatActivity implements View.OnClickListner
{
private EditText editText;
@Override
Protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.button);
editText=(EditText) findViewById(R.id.exit_text);
button.setOnClickListener(this);
}
@Override
public void onClick(View v)//每当按下按钮则会执行
{
switch(v.getID())
{
case R.id.button:
String inputText = editText.getText().toString();
Toast.makeText(MainActivity.this,inputText,Toast.LENGTH_SHORT).show() ;
break;
default:
break;
}
}
}
使用Button更改显示的图片
Public class MainActivity extends AppCompatActivity implements View.OnClickListner
{
private EditText editText;
private ImageView imageView;
@Override
Protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.button);
editText=(EditText) findViewById(R.id.exit_text);
imageView=(ImageView) findviewById(R.id.image_view);
button.setOnClickListener(this);
}
@Override
public void onClick(View v)//每当按下按钮则会执行
{
switch(v.getID())
{
case R.id.button:
imageView.setImageResource(R.drawable.img_2);//按下按钮则显示更 //改为img_2
break;
default:
break;
}
}
}
使用按钮是显示进度条加载
Public class MainActivity extends AppCompatActivity implements View.OnClickListner
{
private EditText editText;
private ImageView imageView;
private ProgressBar progressBar;
@Override
Protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.button);
editText=(EditText) findViewById(R.id.exit_text);
imageView=(ImageView) findviewById(R.id.image_view);
progressBar=(ProgressBar) findviewById(R.id.progress_bar);
button.setOnClickListener(this);
}
@Override
public void onClick(View v)//每当按下按钮则会执行
{
switch(v.getID())
{
case R.id.button:
if(progressBar.getVisibility()==View.GONE)
{
progressBar.setVisibility(View.VISIBLE);//如果进度条不可见,则点 //击按钮后进度条可见。
}
else
{
progressBar.setVisibility(View.GONE);//反之
default:
break;
}
}
}
动态更改进度条进度:
Public class MainActivity extends AppCompatActivity implements View.OnClickListner
{
private EditText editText;
private ImageView imageView;
private ProgressBar progressBar;
@Override
Protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.button);
editText=(EditText) findViewById(R.id.exit_text);
imageView=(ImageView) findviewById(R.id.image_view);
progressBar=(ProgressBar) findviewById(R.id.progress_bar);
button.setOnClickListener(this);
}
@Override
public void onClick(View v)//每当按下按钮则会执行
{
switch(v.getID())
{
case R.id.button:
int progress = progressBar.getProgress();//每点击一次按钮进度加10
progress=progress+10;
progressBar.setProgress(progress);
default:
break;
}
}
}
AlertDialog弹出一个置顶对话框(比如在你删除重要的东西的时候弹出对话框提醒) 的用法:
Public class MainActivity extends AppCompatActivity implements View.OnClickListner
{
private EditText editText;
private ImageView imageView;
private ProgressBar progressBar;
@Override
Protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.button);
editText=(EditText) findViewById(R.id.exit_text);
imageView=(ImageView) findviewById(R.id.image_view);
progressBar=(ProgressBar) findviewById(R.id.progress_bar);
button.setOnClickListener(this);
}
@Override
public void onClick(View v)//每当按下按钮则会执行
{
switch(v.getID())
{
case R.id.button:
AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this); //创建实例
dialog.setTitle(“This is Dialog”);
dialog.setMessage(“Something important.”);
dialog.setCancelable(false);
dialog.setPositiveButton(“OK”, //为对话框设置确定按钮事件
new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog,int which)
{
}
});
dialog.setNegativeButton(“Cencel”,//为对话框设置取消按钮事件
new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog,int which)
{
});
dialog.show();//显示对话框
default:
break;
}
}
}
}
}
recyclerView 适配器代码:
Public class FruitAdapter extends RecyclerView.Adapter<FruitAdapter.ViewHolder>
{
private List<Fruit> mFruitList;
static class ViewHolder extends RecyclerView.ViewHolder//定义一个内部类
{
ImageView fruitImage;
TextView fruitName;
public ViewHolder(View view)
{
super(view);
fruitImage=(ImageView) view.findViewById(R.id.fruit_image);
fruitName=(TextView) view.findViewById(R.id.fruit_name);
}
}
public FruitAdapter(List<Fruit> FuritList)
{
mFruitList=fruitList;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent,int viewType)
//用于创建ViewHoldrer实例
{
View view=LayoutInflater.from(parent.getContext()).
inflat(R.layout.fruit_item,parent,false);
ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(ViewHolder holder,int position)
//对RecyclerView子项数据赋值,每个子项滚动到屏幕时执行
{
Fruit fruit=mFruitList.get(position);
holder.fruitImage.setImageResource(fruit.getImageId());
holder.fruitName.setText(fruit.getName());
}
@Override
public int getItemCount()//返回总的子项数目
{
return mFruitList.size();
}
适配器配好后使用RecyclerView:
public class MainActivity extends AppCompatActivity
{
private List<Fruit> FruitList=new ArrayList<>();//这里事前定义了一个水果类
//
//
//并且自定义了控件一个显示图片一个 //显示水果名。自定义控件参考3.4.2;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initFruits();//初始化水果数据
RecyclerView recyclerView =(RecyclerView) findViewById(R.id.recycler.view);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);//线 //性布局
recyclerView.setlayoutManager(layoutManager);
FruitAdapter adapter= new FruitAdapter(fruitList);
recyclerView.setAdapter(adapter);//完成适配器配置
}
private void initFruits()//初始化水果数据
{
for(int i=0;i<2;i++)//这里循环两次是为了体现出滑动功能
{
Fruit apple=new Fruit(“Apple”,R.drawable.apple_pic);
FruitList.add(apple);
Fruit banana=new Fruit(“Banana”,R.drawable.banana_pic);
FruitList.add(banana);
Fruit orange=new Fruit(“Orange”,R.drawable.orange_pic);
FruitList.add(orange);
Fruit watermelon=new Fruit(“Watermelon”,R.drawable.
watermelon_pic);
FruitList.add(watermelon);
Fruit pear=new Fruit(“Pear”,R.drawable.pear_pic);
FruitList.add(pear);//后面的全部类似,全是水果名
Fruit =new Fruit(“”,R.drawable._pic);
FruitList.add();
Fruit grape=new Fruit(“Grape”,R.drawable.grape_pic);
FruitList.add(grape);
Fruit =new Fruit(“”,R.drawable._pic);
FruitList.add();
Fruit =new Fruit(“”,R.drawable._pic);
FruitList.add();
Fruit =new Fruit(“”,R.drawable._pic);
FruitList.add();
}
}
{
实现瀑布流布局:
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android: orientation=”vertical”
android:layout_width=”match_parent”
android:layout_height=”warp_content”
android:layout_margin=”5dp”>//两子项之间的间距
<ImageView
android: id=”@+id/fruit_image”
android:layout_width=”warp_content”
android:layout_height=”warp_content”
android:layout_gravity=”center_horizontal”/>//图片水平方向居中对齐
<TextView
android: id=”@+id/fruit_name”
android:layout_width=”warp_content”
android:layout_height=”warp_content”
android:layout_gravity=”left”
android:layout_margintop=”10dp”/>
代码:
public class MainActivity extends AppCompatActivity
{
private List<Fruit> FruitList=new ArrayList<>();//这里事前定义了一个水果类
//
//
//并且自定义了控件一个显示图片一个 //显示水果名。自定义控件参考3.4.2;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initFruits();//初始化水果数据
RecyclerView recyclerView =(RecyclerView) findViewById(R.id.recycler.view);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);//线 //性布局
StaggeredGridLayoutManager layoutManager=new
StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL);
//这里这个3是指分为3列,另一个参数指纵向排列
recyclerView.setlayoutManager(layoutManager);
FruitAdapter adapter= new FruitAdapter(fruitList);
recyclerView.setAdapter(adapter);//完成适配器配置
}
private void initFruits()//初始化水果数据
{
for(int i=0;i<2;i++)//这里循环两次是为了体现出滑动功能
{
Fruit apple=new Fruit(getRandomLengthName(“Apple”),
,R.drawable.apple_pic);
FruitList.add(apple);
Fruit banana=new Fruit(getRandomLengthName(“Banana”)
,R.drawable.banana_pic);
FruitList.add(banana);
Fruit orange=new Fruit(getRandomLengthName(“Orange”),
R.drawable.orange_pic);
FruitList.add(orange);
Fruit watermelon=new Fruit(getRandomLengthName(“Watermelon”),
R.drawable.watermelon_pic);
FruitList.add(watermelon);
Fruit pear=new Fruit(getRandomLengthName(“Pear”),
R.drawable.pear_pic);
FruitList.add(pear);//后面的全部类似,全是水果名,就不写了
}
}
private String getRandomLengthName(String name)//每个水果的名字长度随机
{
Random random = new Random();
int length=random.nextInt(20)+1;
StringBuilder builder=new StringBuilder();
for(int i=0;i<length;i++)
{
builder.append(name);
}
return builder.toString();
}
{
RecyclerView的点击事件(比如点击上图的某个水果显示具体内容)
public class MainActivity extends AppCompatActivity
{
private List<Fruit> FruitList=new ArrayList<>();
static class ViewHolder extends RecyclerView.ViewHolder
{
View fruitView,
ImageView fruitImage;
TextView fruitName;
public ViewHolder(View view)
{
super(view) ;
fruitView= view,
fruitImage= (ImageView) view.findViewById(R.id.fruit_image);
fruitName= (TextView) view,findViewById(R.id.fruit_name);
}
}
pubLic FruitAdapter(List<Fruit> fruitList)
{
mFruitList=fruitList;
}
@0verride
public ViewHoLder onCreateViewHolder(ViewGroup parent, int viewType)
{
View view= LayoutInflLater.from(parent.getContext()).inflate(R.1ayout.
fruit_item, parent, false);
final ViewHolder holder= new ViewHoLder(view);
holder.fruitView.setOnClickListener(
new View.0nClickListener()
{
@0verride
pubtic void onC1.ick(View v)
{
int position= holder.getAdapterPosition(),//获取实例
Fruit fruit= mFruitList.get(position);
Toast.makeText(v.getContext() , "you clicked view"+ fruit.getName().
Toast. LENCTH_SHORT) . show( ) ;
}
}):
hoLder.fruitImage.setOnCLickListener(
new View.0nClickListener()
{
@0verride
public void onClick(View v)
{
int position = holder.getAdapterPosition();//获取实例
Fruit fruit = mFruitList.get(position);
Toast.makeText(v.getContext() ,“you clicked image“+ fruit.getName(),
Toast.LENGTH_SHORT) .show();
}
});
return holder;
}
...//此处为上面private void initFruits()函数,不写了
}