一、控件
(一)TextView
1、基本属性
<TextView
android:id="@+id/one"
android:layout_width="200dp"
android:layout_height="200dp"
android:background="#FF00FF00"
android:gravity="center"
android:text="@string/one"
android:textColor="@color/red"
android:textSize="50sp"
android:textStyle="italic">
</TextView>
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView one=findViewById(R.id.one);//通过id获得
one.setText("tdl");
}
}
//colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="purple_200">#FFBB86FC</color>
<color name="purple_500">#FF6200EE</color>
<color name="purple_700">#FF3700B3</color>
<color name="teal_200">#FF03DAC5</color>
<color name="teal_700">#FF018786</color>
<color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color>
<color name="red">#FFFF0000</color>
</resources>
//strings.xml
<resources>
<string name="app_name">HelloWorld</string>
<string name="one">tdl</string>
</resources>
2、带阴影的TextView
android:shadowColor="@color/green"
android:shadowRadius="3.0"
android:shadowDx="15"
android:shadowDy="15"
3、实现跑马灯效果
<TextView
android:id="@+id/one"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="@string/one"
android:textColor="@color/red"
android:textSize="50sp"
android:textStyle="italic"
android:shadowColor="@color/green"
android:shadowRadius="3.0"
android:shadowDx="15"
android:shadowDy="15"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:focusable="true"
android:focusableInTouchMode="true"
android:clickable="true">
<requestFocus/>
</TextView>
可以自定义MytextView类,实现focus
(二)Button
1、基本属性
<Button
android:layout_width="200dp"
android:layout_height="200dp"
android:background="@drawable/btn_selector"
android:backgroundTint="@color/btn_color_selecter"
>
</Button>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/green" android:state_pressed="true" />
<item android:color="@color/red"/>
</selector>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_baseline_account_box_24" android:state_pressed="true"/>
<item android:drawable="@drawable/ic_baseline_account_circle_24"/>
</selector>
2、Button事件处理
public class MainActivity extends AppCompatActivity {
private static final String TAG="leo";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// TextView one=findViewById(R.id.one);
// one.setText("tdl");
Button btn=findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.e(TAG,"click");
// System.out.println("click");
}
});
btn.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
Log.e(TAG,"long");
// System.out.println("long");
return false;
}
});
btn.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
Log.e(TAG,"touch");
// System.out.println("touch");
return false;
}
});
}
}
(三)EditText
1、主要属性
<EditText
android:id="@+id/username"
android:layout_width="200dp"
android:layout_height="50dp"
android:drawableLeft="@drawable/ic_baseline_account_circle_24"
android:hint="@string/username"
android:inputType="text"
android:textSize="20dp"
/>
<EditText
android:id="@+id/password"
android:layout_width="200dp"
android:layout_height="50dp"
android:drawableLeft="@drawable/ic_baseline_account_box_24"
android:hint="@string/password"
android:inputType="textPassword"
android:textSize="20dp" />
<Button
android:id="@+id/btn1"
android:layout_width="100dp"
android:layout_height="50dp"
android:text="登录"
android:textSize="20sp"></Button>
//写为全局
private TextView username;
//监听函数
Button btn1 = findViewById(R.id.btn1);
username = findViewById(R.id.username);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String text = username.getText().toString();
Log.e("tdl", "username: " + text);
}
});
(四)ImageView
1、主要属性
2、缩放类型
<ImageView
android:src="@drawable/good"
android:scaleType="fitCenter"
android:layout_width="200dp"
android:layout_height="200dp">
</ImageView>
(五)ProgressBar
1、基本属性
<ProgressBar
android:id="@+id/pb"
android:layout_width="200dp"
android:layout_height="200dp"
/>
<Button
android:id="@+id/btn"
android:layout_width="200sp"
android:layout_height="60sp"
android:text="隐藏"
android:textSize="25dp"
/>
<ProgressBar
style="?android:attr/progressBarStyleHorizontal"
android:id="@+id/pb2"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:max="100"
/>
<Button
android:id="@+id/btn2"
android:onClick="load"
android:text="模拟下载"
android:textSize="20sp"
android:layout_width="150dp"
android:layout_height="50dp"
/>
<ProgressBar
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:max="100"
android:indeterminate="true"
/>
Button btn = findViewById(R.id.btn);
pb = findViewById(R.id.pb);
pb2 = findViewById(R.id.pb2);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (pb.getVisibility() == View.GONE) {
pb.setVisibility(View.VISIBLE);
} else {
pb.setVisibility(View.GONE);
}
}
});
}
public void load(View view) {
int progress = pb2.getProgress();
if (progress == 100) {
progress = 0;
}
progress += 10;
pb2.setProgress(progress);
}
(六)Notification
1、基本属性
<Button
android:text="通知"
android:onClick="notification"
android:layout_width="150dp"
android:layout_height="50dp"
/>
<Button
android:text="取消"
android:onClick="cancelnotification"
android:layout_width="150dp"
android:layout_height="50dp"
/>
private NotificationManager manager;
private Notification notification;
manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel("tdl", "测试通知", NotificationManager.IMPORTANCE_HIGH);
manager.createNotificationChannel(channel);
}
notification = new NotificationCompat.Builder(this, "tdl")
.setContentTitle("官方通知")
.setContentText("世界那么大,你为什么不去看看?")
.setSmallIcon(R.drawable.ic_baseline_account_circle_24)
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.good))
.build();
}
public void notification(View view) {
manager.notify(1, notification);
}
public void cancelnotification(View view) {
}
(七)Toolbar
1、基本属性
<androidx.appcompat.widget.Toolbar
android:background="@color/cardview_dark_background"
app:navigationIcon="@drawable/ic_baseline_account_circle_24"
app:title="@string/app_name"
app:titleTextColor="@color/green"
app:subtitle="tdl"
app:subtitleTextColor="@color/red"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"/>
(八)AlertDiglog
1、基本属性
public void alert(View view) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("消息")
.setIcon(R.drawable.ic_baseline_account_circle_24)
.setMessage("hello world")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
})
.setNeutralButton("彩蛋", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
})
.create()
.show();
}
<Button
android:text="对话框"
android:textSize="30dp"
android:onClick="alert"
android:layout_width="150dp"
android:layout_height="100dp"/>
(九)PopupWindow
1、基本属性
二、布局
(一)LinearLayout
(二)RelativeLayout
(三)frameLayout
(四)tableLayout
(五)GridLayout
(六)ConstraintLayout
三、ListView
<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<TextView
android:id="@+id/tv"
android:layout_width="match_parent"
android:layout_height="50dp">
</TextView>
package cool.tdl.listview;
public class Bean {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package cool.tdl.listview;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.List;
public class myAdapter extends BaseAdapter {
private List<Bean> list;
private Context context;
public myAdapter(List<Bean> list, Context context) {
this.list = list;
this.context = context;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
if (view==null){
view = LayoutInflater.from(context).inflate(R.layout.list_item, viewGroup, false);
}
TextView text = view.findViewById(R.id.tv);
text.setText(list.get(i).getName());
return view;
}
}
package cool.tdl.listview;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private List<Bean> data=new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
for (int i=0;i<100;i++){
Bean bean = new Bean();
bean.setName("小滕"+i);
data.add(bean);
}
ListView lv = findViewById(R.id.lv);
lv.setAdapter(new myAdapter(data,this));
}
}