package com.h.ad;
import android.app.Dialog;
import android.content.Context;
import android.os.Build;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.util.TypedValue;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class DialogTest extends Dialog {
public DialogTest(@NonNull Context context) {
super(context);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(
getWindow().getContext().getResources()
.getIdentifier("dialogtest", "layout", getWindow().getContext().getPackageName()));
getWindow().getDecorView().post(new Runnable() {
@Override
public void run() {
List<View> listview=getAllChildViews(getWindow().getDecorView());
for (int i=0;i<listview.size();i++){
// System.out.println("DialogTest:"+listview.get(i));
View view=listview.get(i);
// System.out.println("getAttributeSourceResourceMap:"+view.getAttributeSourceResourceMap().values());
// Map<Integer, Integer> getAttributeSourceResourceMap=view.getAttributeSourceResourceMap();
// for(Map.Entry<Integer,Integer> entry : getAttributeSourceResourceMap.entrySet()){
// System.out.println("getAttributeSourceResourceMap key:"+entry.getKey());
// System.out.println("getAttributeSourceResourceMap value:"+entry.getValue());
// }
if (view.getClass().isAssignableFrom(LinearLayout.class) ){
log("-----LinearLayout----");
LinearLayout linearLayout= (LinearLayout) view;
// linearLayout.getAttributeSourceResourceMap();
}else if (view.getClass().isAssignableFrom(RelativeLayout.class)){
log("-----RelativeLayout----");
}else if(view.getClass().isAssignableFrom(TextView.class)){
log("-----TextView----");
TextView textView= (TextView) view;
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, getSize(textView.getTextSize()));
}else if(view.getClass().isAssignableFrom(Button.class)){
Button button= (Button) view;
log("-----Button----");
}
ViewGroup.LayoutParams lp=view.getLayoutParams();
lp.width= (int) getSize(view.getWidth());
lp.height= (int) getSize(view.getHeight());
view.setLayoutParams(lp);
log(""+view.getWidth());
}
}
});
}
public void log(Object data){
System.out.println("DialogTest:"+data);
}
public float getSize(float size){
float designWidth=1080.0f;
// DisplayMetrics dm = new DisplayMetrics();
// System.out.println(context);
DisplayMetrics dm = getWindow().getContext().getResources().getDisplayMetrics();
int width=dm.widthPixels;
return size/designWidth*width;
}
private List<View> getAllChildViews(View view) {
List<View> allchildren = new ArrayList<View>();
if (view instanceof ViewGroup) {
ViewGroup vp = (ViewGroup) view;
for (int i = 0; i < vp.getChildCount(); i++) {
View viewchild = vp.getChildAt(i);
allchildren.add(viewchild);
//再次调用本身(递归)
allchildren.addAll(getAllChildViews(viewchild));
}
}
return allchildren;
}
}
遍历view
最新推荐文章于 2024-07-18 11:07:23 发布