第一行代码(安卓)学习心得——活动(2)

与UI有关的知识

一.四种布局

LinearLayout

andriod:orientation指定排列方式,Vertical为竖直方向上,Horizontal为水平方向。
android:layout_gravity指定控件在布局中的对齐方式,top,bottom,center。若排列方式为Horizontal,只能在竖直方向上改变。

一个小栗子:
<EditText Android:width=“0dp” Android:layout_weight=“1” />
<Button Android:width=“0dp” Android:layout_weight=“1” />
此时他们将在水平方向上平分屏幕宽度。

RelativeLayout

Android:layout_alignParentBottom=“true”, Android:layout_alignParentRight=“true”Android:layout_alignParentLeft=“true”, Android:layout_alignParentTop=“true”
Android:layout_centerInParent=“true”
分别使组件位于父布局的上下左右中, 也可以针对某一个组件作为定位点,指定该组件位于中间即可,使用Android:layout_centerInParent=“true”。
Android:llayout_toRightof=“true,同理有toLeftOf,above,below”

FrameLayout

所有组件默认摆放在布局的左上角,可以用android:layout_gravity指定控件在布局中的对齐方式,left,right.

PercentLayout

需要在app/gradle中添加implementation ‘com.android.support:percent:27.0.2’,注意标签要使用完整包名android.support.percent.PercentRelativeLayout。
app:layout_widthPercent=%50,app:layout_heightPercent=%50,宽度和高度各占50%。

二.组件使用

button.setVisibility(…)设置组件是否可见,三种属性,View.GONE(移除),View.VISIBLE,View.INVISIBLE(透明不可见)

常用组件 特殊组件 自定义组件
Button ListView 引入布局
TextView RecyclerView 创建自定义控件
EditText
ImageView
ProgressBar
AlertDialog
ProgressDialog

常用组件:

Button

Android:textAllCaps="false"禁止自动进行大写转换。
注册监听器:
1.

Button button=(Button) findViewById(R.id.buttonname)
button.setonClickListener(new View.OnclickListener{
		public void onClick(View v){
		}
}

2…mainactivity …implements View.OnclickListener{

public void onCreate(){
Button button=(Button) findViewById(R.id.buttonname)
button.setonClickListener(this;}
public void onClick(View v){
switch(v.getID()){
	case R.id.button{
		}//添加逻辑
	}
	....
}

EditText

android:hint=""//添加隐藏文字,提示性文本。
android:maxlines=""//指定最大行数。

editText.getText().toString();//获取编辑栏中文字并转为字符串。

TextView

andriod:textSize指定文字大小
android:textcolor指定文字颜色

ImageView

android:src=""指定图片路径

ImageView imageview=(Imageview) findViewById(R.id.ImgaeId);//与xml属性配合
imageview.setImageResource(R.id.ImageId);//都可以由图片路径设置图片

ProgressBar

默认为圆圈进度条,style="?android:attr/progressBarStyleHorizontal"//设置为水平进度条

int progress=progress.getProgressBar();
progress+=10;//可以用这个类似的办法来控制进度条进度

AlertDialog

置顶于所有界面元素之上,能够屏蔽其他组件的交互能力,可以作为确认框。
在这里插入图片描述
setPosiveButton()为对话框设置确定按钮的点击事件。

ProgressDialog

用法与AlertDialog类似。

Public void onClick(
	switch(v.getId()){
		case R.id.button:
		ProgressDialog progressdialog=new ProgressDialog(MainActivity.this);
		progressdialog.setTitle(“ Title”);
		progressdialog.setMassage("Loading ...");
		progressdialog.setCancelable(true);//传入true可以通过Back取消,传入false则不行
		progressdialog.show();
		break;//加载完成后应该用dismiss()方法关闭对话框
{

特殊组件(最常用但困难):

ListView

public class FruitAdapter extends ArrayAdapter<Fruit> {
    private int resourceId;
    public FruitAdapter(Context context, int textViewResourceId, List<Fruit> objects){
        super(context,textViewResourceId,objects);
        resourceId=textViewResourceId;
        }
    public View getView(int position, View convertView, ViewGroup parent)
    {
        Fruit fruit=getItem(position);
        View view;
        ViewHolder viewHolder;
        if(convertView==null){
            view=LayoutInflater.from(getContext()).inflate(resourceId,parent,false);//用于加载布局
            viewHolder=new ViewHolder();
            viewHolder.fruitimage=(ImageView) view.findViewById(R.id.fruit_image);
            viewHolder.fruitname=(TextView) view.findViewById(R.id.fruit_name);
            view.setTag(viewHolder);//将ViewHolder存在View中
        }else {
            view=convertView;
            viewHolder=(ViewHolder) view.getTag();//重新获取ViewHolder
        }
        viewHolder.fruitimage.setImageResource(fruit.getImageId());
        viewHolder.fruitname.setText(fruit.getName());//设置图片和文字栏展示
        return view;
    }
    class ViewHolder{
        ImageView fruitimage;
        TextView fruitname;
    }

public class Fruit {
    private String name;
    private int imageId;
    public Fruit(String name,int imageId){this.name=name; this.imageId=imageId; }
    public int getImageId() {return imageId; }
    public String getName() {return name;}
}

//点击事件
public class MainActivity extends AppCompatActivity {
    private List<Fruit> fruitList=new ArrayList<>();
    protected void onCreate(Bundle savedInstanceState) {
        /*super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);*/
        FruitAdapter adapter=new FruitAdapter(MainActivity.this,R.layout.fruit_item,fruitList);
        ListView listView=(ListView) findViewById(R.id.list_view);
        listView.setAdapter(adapter);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {//设置监听器
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Fruit fruit=fruitList.get(position);
                Toast.makeText(MainActivity.this,fruit.getName(),Toast.LENGTH_SHORT).show();
            }
        });
    }

RecyclerView

1.配置
implementation ‘com.android.support:appcompat-v7:28.0.0’
implementation ‘com.android.support:recyclerview-v7:28.0.0’
2.使用(单独见文)

引入布局

在xml文件中加入这句:
<include layout=""@layout_id"

发布了1 篇原创文章 · 获赞 0 · 访问量 20

猜你喜欢

转载自blog.csdn.net/qq_43228039/article/details/104264982