PopupWindow弹出窗体
1.底部弹出窗体
//效果图
// An highlighted block
public class MainActivity extends AppCompatActivity {
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
show_PopupWindow();
}
});
}
public void show_PopupWindow(){
PopupWindow popupWindow = new PopupWindow(MainActivity.this);
View view = LayoutInflater.from(this).inflate(R.layout.layout_view, null);
popupWindow.setContentView(view);
popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
popupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
popupWindow.setOutsideTouchable(true);
View view1 = LayoutInflater.from(this).inflate(R.layout.activity_main, null);
popupWindow.showAtLocation(view1, Gravity.BOTTOM,0,0);
WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
layoutParams.alpha = 0.5f;
getWindow().setAttributes(layoutParams);
popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
@Override
public void onDismiss() {
WindowManager.LayoutParams layoutParams1 = getWindow().getAttributes();
layoutParams1.alpha = 1.0f;
getWindow().setAttributes(layoutParams1);
}
});
}
}
//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/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="拍照"
android:textSize="30dp"
android:textAlignment="center"
/>
<View
android:background="#969696"
android:layout_width="match_parent"
android:layout_height="5dp"></View>
<TextView
android:id="@+id/text2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="从手机相册选择"
android:textSize="30dp"
android:textAlignment="center"
/>
<View
android:background="#969696"
android:layout_width="match_parent"
android:layout_height="5dp"></View>
<TextView
android:id="@+id/text3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="保存图片"
android:textSize="30dp"
android:textAlignment="center"
/>
<View
android:background="#969696"
android:layout_width="match_parent"
android:layout_height="5dp"></View>
<TextView
android:id="@+id/text4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="取消"
android:textSize="30dp"
android:textAlignment="center"
/>
</LinearLayout>
2.自定义系统菜单
//效果图
// An highlighted block
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu,menu);
MenuItem item3 = menu.findItem(R.id.item3);
item3.setActionView(R.layout.layout_aaa);
ImageView imageView = item3.getActionView().findViewById(R.id.image01);
TextView textView = item3.getActionView().findViewById(R.id.text02);
imageView.setImageResource(R.drawable.dianzan_xianxing);
textView.setText("20");
MenuItem item4 = menu.findItem(R.id.item4);
item4.setActionView(R.layout.layout_aaa);
ImageView imageView1 = item4.getActionView().findViewById(R.id.image01);
TextView textView1 = item4.getActionView().findViewById(R.id.text02);
imageView1.setImageResource(R.drawable.cai_xianxing);
textView1.setText("30");
return super.onCreateOptionsMenu(menu);
}
}
//布局文件
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/item1" android:title="刷新" app:showAsAction="always"></item>
<item android:id="@+id/item2" android:title="主页" app:showAsAction="always"></item>
<item android:id="@+id/item3" android:title="点赞" app:showAsAction="always"></item>
<item android:id="@+id/item4" android:title="踩" app:showAsAction="always"></item>
</menu>
//xml.文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="20dp"
>
<ImageView
android:id="@+id/image01"
android:layout_width="30dp"
android:layout_height="30dp" />
<TextView
android:id="@+id/text02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="文本"
android:layout_toRightOf="@id/image01"
android:textSize="15dp"
/>
</RelativeLayout>
3.listview
//效果图
// An highlighted block
public class MyAdapter extends BaseAdapter {
List<JAVABean> list;
Context context;
public static final int type1=0;
public static final int type2=1;
int count;
public MyAdapter(List<JAVABean> list, Context context) {
this.list = list;
this.context = context;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
int index = getItemViewType(position);
switch (index){
case type2:
ViewHolder viewHolder=null;
if(convertView==null){
convertView=View.inflate(context,R.layout.list_view,null);
viewHolder=new ViewHolder();
viewHolder.imageView=convertView.findViewById(R.id.image01);
viewHolder.textView1=convertView.findViewById(R.id.text02);
convertView.setTag(viewHolder);
}else {
viewHolder= (ViewHolder) convertView.getTag();
}
if (position == count){
viewHolder.textView1.setTextColor(Color.RED);
}
viewHolder.imageView.setImageResource(R.mipmap.ic_launcher_round);
viewHolder.textView1.setText(list.get(position).getTitle());
break;
case type1:
ViewHolder viewHolder1=null;
if(convertView==null){
convertView=View.inflate(context,R.layout.list_send,null);
viewHolder1=new ViewHolder();
viewHolder1.textView1=convertView.findViewById(R.id.textview);
convertView.setTag(viewHolder1);
}else {
viewHolder1= (ViewHolder) convertView.getTag();
}
if (position == count){
viewHolder1.textView1.setTextColor(Color.RED);
}
viewHolder1.textView1.setText(list.get(position).getTitle());
break;
}
return convertView;
}
@Override
public int getItemViewType(int position) {
return list.get(position).getFlag();
}
@Override
public int getViewTypeCount() {
return 2;
}
class ViewHolder{
ImageView imageView;
TextView textView1;
}
public void setCurrentMovePosition(int position){
this.count = position;
}
}
//java代码
public class MainActivity extends AppCompatActivity {
final List<JAVABean> list = new ArrayList<>();
MyAdapter myAdapter;
ListView listView;
ListView listView1;
String[] strings ={"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
@SuppressLint("ClickableViewAccessibility")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
listView = findViewById(R.id.listview);
listView1 = findViewById(R.id.listview1);
ArrayAdapter<String> adapter = new ArrayAdapter<>(MainActivity.this,R.layout.support_simple_spinner_dropdown_item,strings);
listView1.setAdapter(adapter);
myAdapter = new MyAdapter(list,MainActivity.this);
listView.setAdapter(myAdapter);
listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String string = strings[position];
for (int i = 0;i<list.size();i++){
JAVABean javaBean = list.get(i);
if (javaBean.getTitle().equals(string)){
listView.setSelection(i);
}
}
}
});
// listView.setOnTouchListener(new View.OnTouchListener() {
// @Override
// public boolean onTouch(View v, MotionEvent event) {
// switch (event.getAction()){
// case MotionEvent.ACTION_DOWN:
// break;
// case MotionEvent.ACTION_MOVE:
// int x = (int) event.getX();
// int y = (int) event.getY();
// int movel = listView.pointToPosition(x,y);
// myAdapter.setCurrentMovePosition(movel);
// myAdapter.notifyDataSetInvalidated();
// break;
// }
// return false;
// }
// });
}