真正想要做成一件事才会花时间花精力耐心的去学习 使用的文件 原理1用到的文件2,3,5 分析完毕,开始代码,正在加载… 文件2: 文件3: 文件4: 文件5: 文件6: 加载完毕,执行 ps:嗯,我觉得真正的大佬是可以做出下面这样的效果图:
最近呢,对八卦图感兴趣,那就查查资料吧
看到八卦还分两种,一种是文王后天八卦一种是伏羲先天八卦
然后呢,就想着如果动起来,什么算卦的好像就是先天后天八卦组合起来的吧,那就试试吧,下面展示效果图:
简要介绍下实现原理:
1.背景采用自定义容器
(注:用不用容器也没关系,这里只是为了演示如何实现自定义容器
2.八个黑圆以及白色圆的放置位置是采用自定义控件
3.外边的旋转其实只是图片的帧动画
java文件:
1.chamber 继承了SurfaceView
2.customlayout_params继承了MarginLayoutParams
3.customlayout继承了ViewGroup
4.cham_main继承了Activity
5.attrs.xml自定义布局layout属性值
6.bazhen.xml主布局实现
八卦阵的八个图片,下载后一定要记住图片的大小
(注:摆放位置以及旋转后回到原点很有必要
原理2用到的文件1,5
原理3也就是主程序入口用到文件4,6
文件1:public class chamber extends SurfaceView implements SurfaceHolder.Callback,Runnable{ private float vie_z=0; //边缘与半径之和 private float al_sew=0; private Paint myPaint; //画笔,包含画几何图形文本等的样式和颜色信息. private int textColor; //设置文本颜色. private float tsiz = 0; //设置的字体大小 -40 private String Ttext=""; //控件上的文本 private int mode=1; //表示占据屏幕宽度的1/mode. //可变元素.. public int wh_peo=7; //在线人数,在线即显示目标颜色.. private int wh_ch=0; //圆在线过程.. public int cor_co;//0xFF8B0A50; //表示目标颜色,即内圆颜色 0xFF1E90FF private Thread thread; private SurfaceHolder surfaceholder; //surfaceview的控制器 private Canvas canvas; private boolean isThreadRunning=true; public chamber(Context context) { super(context); init(context); } public chamber(Context context, AttributeSet attrs) {//此构造方法允许布局编辑器来创造和编辑视图实例. super(context, attrs); TypedArray typedArray1=context.getTheme().obtainStyledAttributes(attrs, R.styleable.Dot,0,0); textColor=typedArray1.getColor(R.styleable.Dot_textColor,0xFF000000); tsiz=typedArray1.getDimension(R.styleable.Dot_textSize,70.f); Ttext=typedArray1.getString(R.styleable.Dot_texKey); typedArray1.recycle(); init(context); } public chamber(Context context, AttributeSet attrs,int defStyleAttr) { super(context,attrs,defStyleAttr); init(context); TypedArray typedArray=context.getTheme().obtainStyledAttributes(attrs, R.styleable.Dot,0,0); tsiz=typedArray.getDimension(R.styleable.Dot_textSize, 5.f); Ttext=typedArray.getString(R.styleable.Dot_texKey); typedArray.recycle(); } public void init(Context context) { surfaceholder=getHolder(); surfaceholder.addCallback(this); //给SurfaceView当前的持有者一个回调对象 cor_co=0xFF7A67EE; int scr_wid=new Tool_4().getScreenWidth(context); al_sew=scr_wid/mode; vie_z=(float)scr_wid/mode/2; vie_z=vie_z/3; int with=getWidth(); int height=getHeight(); //画布的宽高(画布) } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { //计算视图大小,即画布的大小 // TODO Auto-generated method stub super.onMeasure(widthMeasureSpec, heightMeasureSpec); int widthMode=MeasureSpec.getMode(widthMeasureSpec); int widthSize=MeasureSpec.getSize(widthMeasureSpec); //测量宽度 int heightMode=MeasureSpec.getMode(heightMeasureSpec); //测量高度 int heightSize=MeasureSpec.getSize(heightMeasureSpec); switch (widthMode) { case MeasureSpec.EXACTLY: break; //精确值模式,具体数值(父容器已为子容器设置尺寸,子容器应服从边界,不论其想要多大的空间) case MeasureSpec.AT_MOST: widthSize=(int)(al_sew);break; case MeasureSpec.UNSPECIFIED: break; //未指定模式(父容器对于子容器没有任何的限制,自定义View,想多大就多大). } switch (heightMode) { case MeasureSpec.EXACTLY: break; //精确值模式,具体数值(父容器已为子容器设置尺寸,子容器应服从边界,不论其想要多大的空间) case MeasureSpec.AT_MOST: heightSize=(int)(al_sew);break; //最大值模式,(子容器可以是声明大小内的任意大小,当空间宽高设置为wrap_content时为该模式) case MeasureSpec.UNSPECIFIED: break; //未指定模式(父容器对于子容器没有任何的限制,自定义View,想多大就多大). } setMeasuredDimension(widthSize, heightSize); //保存测量结果. } protected void drawView(Canvas canvas) { //Canvas含有很多画图的接口,利用该接口可画出想要的图形.(canvas+paint) // TODO Auto-generated method stub //super.onDraw(canvas); myPaint = new Paint(); canvas.drawColor(Color.GRAY); //设置画布颜色 myPaint.setAntiAlias(true); //设置画笔为无锯齿,用来防止边缘的锯齿(对图像边缘进行柔化处理,使图像边缘看起来平滑更接近实物的物体) myPaint.setColor(textColor); myPaint.setStrokeWidth(10); //al_sew/18 myPaint.setStyle(Paint.Style.STROKE); //填充和描边.Paint.STORKE(仅描边) myPaint.setColor(0xFFFF0000); myPaint.setStyle(Paint.Style.STROKE); //canvas.drawCircle(vie_z*3, vie_z*3, vie_z*3-5, myPaint);//边界圆.. RectF recr=new RectF(vie_z, vie_z, vie_z*5, vie_z*5); canvas.drawArc(recr, -90, 315/wh_peo*wh_ch, false, myPaint); //canvas.drawCircle(vie_z*3, vie_z*3, vie_z*2, myPaint); //外圈边界(运动的圆弧) myPaint.setColor(0xFF000000); myPaint.setStyle(Paint.Style.FILL); //四条交叉线 canvas.drawLine(vie_z*3, vie_z*3,(float)(vie_z*3+(vie_z*3/2+vie_z-5)/1.4),(float)(vie_z*3-(vie_z*3/2+vie_z-5)/1.4),myPaint); canvas.drawLine(vie_z*3, vie_z*3,(float)(vie_z*3-(vie_z*3/2+vie_z-5)/1.4),(float)(vie_z*3-(vie_z*3/2+vie_z-5)/1.4),myPaint); canvas.drawLine(vie_z*3, vie_z*3,(float)(vie_z*3+(vie_z*3/2+vie_z-5)/1.4),(float)(vie_z*3+(vie_z*3/2+vie_z-5)/1.4),myPaint); canvas.drawLine(vie_z*3, vie_z*3,(float)(vie_z*3-(vie_z*3/2+vie_z-5)/1.4),(float)(vie_z*3+(vie_z*3/2+vie_z-5)/1.4),myPaint); myPaint.setColor(0xFFFFFFFF); myPaint.setStyle(Paint.Style.FILL); canvas.drawCircle(vie_z*3, vie_z*3, vie_z/2, myPaint); //内圈边界(表目标) myPaint.setColor(0xFF000000); myPaint.setStyle(Paint.Style.FILL); canvas.drawCircle(vie_z*3, vie_z/2, vie_z/2-5, myPaint); canvas.drawLine(vie_z*3, vie_z*3-vie_z/2, vie_z*3, vie_z, myPaint); if (wh_ch>=2) myPaint.setColor(cor_co); else myPaint.setColor(0xFFFFFFFF); myPaint.setStyle(Paint.Style.FILL); canvas.drawCircle(vie_z*3, vie_z*3/2, vie_z/3, myPaint); //上小圆 if (wh_ch>=3) myPaint.setColor(cor_co); else myPaint.setColor(0xFFFFFFFF); myPaint.setStyle(Paint.Style.FILL); canvas.drawCircle((float)(vie_z*3+vie_z*3/2/1.4), (float)(vie_z*3-vie_z*3/2/1.4), vie_z/3, myPaint); //右上 myPaint.setColor(0xFF000000); myPaint.setStyle(Paint.Style.FILL); //canvas.drawLine(vie_z*3, vie_z*3/2-vie_z/3, vie_z*3, vie_z, myPaint); canvas.drawCircle((float)(vie_z*3+(vie_z*3/2+vie_z-5)/1.4), (float)(vie_z*3-(vie_z*3/2+vie_z-5)/1.4), vie_z/2-5, myPaint); myPaint.setColor(0xFF000000); myPaint.setStyle(Paint.Style.FILL); canvas.drawLine(vie_z*3+vie_z/2, vie_z*3, vie_z*5, vie_z*3, myPaint); canvas.drawCircle(vie_z*5+vie_z/2, vie_z*3, vie_z/2-5, myPaint); if (wh_ch>=4) myPaint.setColor(cor_co); else myPaint.setColor(0xFFFFFFFF); myPaint.setStyle(Paint.Style.FILL); canvas.drawCircle(vie_z*3+vie_z*3/2, vie_z*3, vie_z/3, myPaint); //右 if (wh_ch>=5) myPaint.setColor(cor_co); else myPaint.setColor(0xFFFFFFFF); myPaint.setStyle(Paint.Style.FILL); canvas.drawCircle((float) (vie_z*3+vie_z*3/2/1.4), (float)(vie_z*3+vie_z*3/2/1.4), vie_z/3, myPaint); //右下 myPaint.setColor(0xFF000000); myPaint.setStyle(Paint.Style.FILL); canvas.drawCircle((float)(vie_z*3+(vie_z*3/2+vie_z-5)/1.4), (float)(vie_z*3+(vie_z*3/2+vie_z-5)/1.4), vie_z/2-5, myPaint); myPaint.setColor(0xFF000000); myPaint.setStyle(Paint.Style.FILL); canvas.drawLine(vie_z*3, vie_z*3+vie_z/2, vie_z*3, vie_z*5, myPaint); canvas.drawCircle(vie_z*3, vie_z*5+vie_z/2, vie_z/2-5, myPaint); if (wh_ch>=6) myPaint.setColor(cor_co); else myPaint.setColor(0xFFFFFFFF); myPaint.setStyle(Paint.Style.FILL); canvas.drawCircle(vie_z*3, vie_z*3+vie_z*3/2, vie_z/3, myPaint); //下 if (wh_ch>=7) myPaint.setColor(cor_co); else myPaint.setColor(0xFFFFFFFF); myPaint.setStyle(Paint.Style.FILL); canvas.drawCircle((float) (vie_z*3-vie_z*3/2/1.4), (float)(vie_z*3+vie_z*3/2/1.4), vie_z/3, myPaint);//左下 myPaint.setColor(0xFF000000); myPaint.setStyle(Paint.Style.FILL); canvas.drawCircle((float)(vie_z*3-(vie_z*3/2+vie_z-5)/1.4), (float)(vie_z*3+(vie_z*3/2+vie_z-5)/1.4), vie_z/2-5, myPaint); myPaint.setColor(0xFF000000); myPaint.setStyle(Paint.Style.FILL); canvas.drawLine(vie_z*3-vie_z/2, vie_z*3, vie_z, vie_z*3, myPaint); canvas.drawCircle(vie_z/2, vie_z*3, vie_z/2-5, myPaint); if (wh_ch>=8) myPaint.setColor(cor_co); else myPaint.setColor(0xFFFFFFFF); myPaint.setStyle(Paint.Style.FILL); canvas.drawCircle(vie_z*3/2, vie_z*3, vie_z/3, myPaint); //左 if (wh_ch>=9) myPaint.setColor(cor_co); else myPaint.setColor(0xFFFFFFFF); myPaint.setStyle(Paint.Style.FILL); canvas.drawCircle((float) (vie_z*3-vie_z*3/2/1.4), (float)(vie_z*3/2+(vie_z*3/2-vie_z*3/2/1.4)), vie_z/3, myPaint);//左上 myPaint.setColor(0xFF000000); myPaint.setStyle(Paint.Style.FILL); canvas.drawCircle((float)(vie_z*3-(vie_z*3/2+vie_z-5)/1.4), (float)(vie_z*3-(vie_z*3/2+vie_z-5)/1.4), vie_z/2-5, myPaint); if (wh_ch>=wh_peo+1) isThreadRunning=false; else wh_ch+=1;//wh_ch=0; myPaint.setStyle(Paint.Style.STROKE); } public void run() { //表示正在线上的代表.. // TODO Auto-generated method stub while (isThreadRunning) { canvas=surfaceholder.lockCanvas(); //lockCanvas(Rect dirty)//锁定某区域进行画图(相对部分内存要求比较高的游戏来说); //锁定画布后就可以通过其返回的画布对象Canvas在其上面画图等操作; if (canvas!=null) { drawView(canvas); //锁定后才能画图 surfaceholder.unlockCanvasAndPost(canvas); //结束锁定画图,并提交改变给系统; } try { //if (wh_ch==wh_peo) Thread.interrupted(); //结束线程.. Thread.sleep(1000); }//相当于帧率,值越小越流畅(相当于速度(频率),根据模式进行修改) catch (Exception e) { e.printStackTrace();} } } @Override public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) { //surfaceview大小发生改变时调用;[运行时按了home键] //icon=BitmapFactory.decodeResource(context.getResources(), R.drawable.nova5); } @Override public void surfaceCreated(SurfaceHolder arg0) { // TODO Auto-generated method stub thread=new Thread(this); thread.start(); isThreadRunning=true; } @Override public void surfaceDestroyed(SurfaceHolder arg0) { // TODO Auto-generated method stub isThreadRunning=false; } public String getText() { return Ttext; } public void setText(String str) { //重新设置文字后重绘界面. this.Ttext=str; invalidate(); } @Override public void invalidate() { //重绘界面 // TODO Auto-generated method stub super.invalidate(); } public boolean onTouchEvent(MotionEvent event) { return super.onTouchEvent(event); } }
//继承LayoutParams.. 定义布局参数类.. public class customlayout_params extends MarginLayoutParams{ //继承自MarginLayoutParams 则自动支持margin属性.. public static final int POSITION_MIDDLE=0; public static final int POSITION_LEFT=1; public static final int POSITION_RIGHT=2; public static final int POSITION_BOTTOM=3; public static final int POSITION_RIGHTANDBOTTOM=4; public int position=POSITION_LEFT; public customlayout_params(Context c, AttributeSet attrs) { super(c, attrs); // TODO Auto-generated constructor stub TypedArray a=c.obtainStyledAttributes(attrs, R.styleable.customlay); position=a.getInt(R.styleable.customlay_layout_position, position); a.recycle(); } public customlayout_params(int width,int height) { // TODO Auto-generated constructor stub super(width,height); } public customlayout_params(ViewGroup.LayoutParams source) { // TODO Auto-generated constructor stub super(source); } }
//自定义布局管理器示例. public class customlayout extends ViewGroup{ public customlayout(Context context) { super(context); // TODO Auto-generated constructor stub } public customlayout(Context context,AttributeSet attrs) { super(context,attrs,0); } public customlayout(Context context,AttributeSet attrs,int defStyle) { super(context,attrs,defStyle); } protected void onMeasure(int widthMeasureSpec,int heightMeasureSpec) { //计算出所有的childView的宽和高.. int widthMode=MeasureSpec.getMode(widthMeasureSpec); int heightMode=MeasureSpec.getMode(heightMeasureSpec); int sizeWidth=MeasureSpec.getSize(widthMeasureSpec); int sizeHeight=MeasureSpec.getSize(heightMeasureSpec); int layoutWidth=0; int layoutHeight=0; measureChildren(widthMeasureSpec, heightMeasureSpec); //计算出所有的ChildView的宽和高.. int cWidth=0; int cHeight=0; int count=getChildCount(); for (int i=0; i<count; i++) { View child=getChildAt(i); measureChildWithMargins(child, widthMeasureSpec, 0, heightMeasureSpec, 0); } customlayout_params params=null; if (widthMode==MeasureSpec.EXACTLY) { layoutWidth=sizeWidth; } else { for (int i=0;i<count;i++) { View child=getChildAt(i); cWidth=child.getMeasuredWidth(); int marginWidth=cWidth+params.leftMargin+params.rightMargin; //3 layoutWidth=marginWidth>layoutWidth?marginWidth:layoutWidth; //3 } } if (heightMode==MeasureSpec.EXACTLY) { layoutHeight=sizeHeight; } else { for (int i=0;i<count;i++) { View child=getChildAt(i); cHeight=child.getMeasuredHeight(); //layoutHeight=cHeight>layoutHeight?cHeight:layoutHeight; //2 int marginHeight=cHeight+params.topMargin+params.bottomMargin; //3 layoutHeight=marginHeight>layoutHeight?marginHeight:layoutHeight; //3 } } setMeasuredDimension(layoutWidth, layoutHeight); //为布局容器自定义布局属性. //在布局文件中指定布局属性,就能控制子控件在什么位置..类似相对布局RelativeLayout.. /*1.自定义LayoutParams.. 即自定义属性,布局参数类.. (明确布局容器的需求,初步定义布局属性).. 在attrs.xml中设置.. *2.继承MarginLayoutParams.. 定义布局参数类.. 定义继承了LayoutParams的类.. *3.重写generateLayoutParams()..(获取布局参数的方法)..在继承了viewGroup中设置.. *4.在布局文件中使用布局属性.. (即xmlns:dw)..在布局文件xml中设置 *5.在onMeasure和onLayout中使用布局参数.. 在继承了viewGroup中设置.. */ @Override public LayoutParams generateLayoutParams(AttributeSet attrs) { //将返回值设置为位MarginLayoutParams.. // TODO Auto-generated method stub return new customlayout_params(getContext(), attrs); } @Override protected ViewGroup.LayoutParams generateLayoutParams(LayoutParams p) { // TODO Auto-generated method stub return new customlayout_params(p); } @Override protected LayoutParams generateDefaultLayoutParams() { // TODO Auto-generated method stub return new customlayout_params(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); } @Override protected boolean checkLayoutParams(ViewGroup.LayoutParams p) { // TODO Auto-generated method stub return p instanceof customlayout_params; } @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { // TODO Auto-generated method stub final int count=getChildCount(); int childMeasureWidth=0; int childMeasureHeight=0; customlayout_params params=null; int layoutWidth=0; int layoutHeight=0; int maxChildHeight=0; for (int i=0;i<count;i++) { View child=getChildAt(i); childMeasureWidth=child.getMeasuredWidth(); childMeasureHeight=child.getMeasuredHeight(); params=(customlayout_params)child.getLayoutParams(); switch (params.position) { case customlayout_params.POSITION_MIDDLE: left=(getWidth()-childMeasureWidth)/2-params.rightMargin+params.leftMargin; top=(getHeight()-childMeasureHeight)/2+params.topMargin-params.bottomMargin; break; case customlayout_params.POSITION_LEFT: left=0+params.leftMargin; top=0+params.topMargin; break; case customlayout_params.POSITION_RIGHT: left=getWidth()-childMeasureWidth-params.rightMargin; top=0+params.topMargin; break; case customlayout_params.POSITION_BOTTOM: left=0+params.leftMargin; top=getHeight()-childMeasureHeight-params.bottomMargin; break; case customlayout_params.POSITION_RIGHTANDBOTTOM: left=getWidth()-childMeasureWidth-params.rightMargin; top=getHeight()-childMeasureHeight-params.bottomMargin; break; default: break; } child.layout(left, top, left+childMeasureWidth, top+childMeasureHeight); } } }
public class cham_main extends Activity{ ImageView a,b,c,d,e,f,g,h,Taiji,a0,b0,c0,d0,e0,f0,g0,h0; app_ui.chamber cha1; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.bazhen); cha1=(app_ui.chamber)findViewById(R.id.cham1); Taiji=(ImageView)findViewById(R.id.taiji); //文王即后天八卦. a=(ImageView)findViewById(R.id.a); b=(ImageView)findViewById(R.id.b); c=(ImageView)findViewById(R.id.c); d=(ImageView)findViewById(R.id.d); e=(ImageView)findViewById(R.id.e); f=(ImageView)findViewById(R.id.f); g=(ImageView)findViewById(R.id.g); h=(ImageView)findViewById(R.id.h); //先天伏羲八卦. a0=(ImageView)findViewById(R.id.a0); b0=(ImageView)findViewById(R.id.b0); c0=(ImageView)findViewById(R.id.c0); d0=(ImageView)findViewById(R.id.d0); e0=(ImageView)findViewById(R.id.e0); f0=(ImageView)findViewById(R.id.f0); g0=(ImageView)findViewById(R.id.g0); h0=(ImageView)findViewById(R.id.h0); rolat(a,35,307,1); //270+35=305 rolat(b,-192+35,192+35,1); rolat(c,-234,35,1); //x=-270+35 rolat(d,-192+35,-192+35,1); rolat(e,35,-234,1); rolat(f,192+35,-192+35,1); rolat(g,308,35,1); rolat(h,192+35,192+35,1); rolat(Taiji, 60, 60,2); rolat(a0,35,35+440,0); rolat(b0,-314+35,314+35,0); rolat(c0,-440+35,35,0); rolat(d0,-314+35,-314+35,0); rolat(e0,35,-440+35,0); rolat(f0,314+35,-314+35,0); rolat(g0,440+35,35,0); rolat(h0,314+35,314+35,0); } public void rolat(View v,int rotex,int rotey,int mode) { int dur=-1;switch (mode) { case 0:dur=30000;break; //先天八卦移动速度.. case 1:dur=10000;break; //后天八卦移动速度.. case 2:dur=50000;break; default: dur=-1; } //中心太极移动速度.. Animation anima=new RotateAnimation(0, 359,rotex,rotey); //指定中心的旋转..359 anima.setDuration(dur); anima.setRepeatMode(-1); anima.setRepeatCount(100); v.startAnimation(anima); } }
<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="Dot"> <attr name="textColor" format="color"></attr> <!-- format即自定义属性. --> <attr name="textSize" format="dimension"></attr> <attr name="texKey" format="string"></attr> </declare-styleable> <declare-styleable name="customlay"> <!-- 自定义布局layout属性值 --> <attr name="layout_position"> <enum name="center" value="0"/> <!-- 居中 --> <enum name="left" value="1"/> <!-- 左上 --> <enum name="right" value="2"/> <!-- 右上 --> <enum name="bottom" value="3"/> <!-- 左下 --> <enum name="rightandBottom" value="4"/> <!-- 右下 --> </attr> </declare-styleable> </resources>
<?xml version="1.0" encoding="utf-8"?> <app_ui.customlayout xmlns:android="https://schemas.android.com/apk/res/android" xmlns:example="https://schemas.android.com/apk/res/com.example.g_game" android:layout_width="match_parent" android:layout_height="match_parent"> <app_ui.chamber android:id="@+id/cham1" android:layout_width= "wrap_content" android:layout_height= "wrap_content" example:layout_position="center"/> <!-- android:background="#191970" --> <!-- 后天文王八卦 --> <ImageView android:id="@+id/a" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/c_li" example:layout_position="center" android:tag="2" android:rotation="0" android:layout_marginBottom="270px"/> <ImageView android:id="@+id/b" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/b_kun" example:layout_position="center" android:rotation="45" android:layout_marginBottom="192px" android:layout_marginLeft="192px"/> <!-- 192=270/1.4 --> <ImageView android:id="@+id/c" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/h_dui" android:rotation="90" example:layout_position="center" android:layout_marginLeft="270px"/> <ImageView android:id="@+id/d" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/a_qian" example:layout_position="center" android:rotation="135" android:layout_marginTop="192px" android:layout_marginLeft="192px"/> <ImageView android:id="@+id/e" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/d_kan" android:rotation="180" example:layout_position="center" android:layout_marginTop="270px"/> <ImageView android:id="@+id/f" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/g_gen" example:layout_position="center" android:rotation="225" android:layout_marginTop="192px" android:layout_marginRight="192px"/> <ImageView android:id="@+id/g" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/e_zhen" android:rotation="270" example:layout_position="center" android:layout_marginRight="270px"/> <ImageView android:id="@+id/h" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/f_xun" example:layout_position="center" android:rotation="315" android:layout_marginBottom="192px" android:layout_marginRight="192px"/> <!-- 八卦太极图 --> <ImageView android:id="@+id/taiji" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/wuji" example:layout_position="center"/> <!-- 先天伏羲八卦 --> <ImageView android:id="@+id/a0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/a_qian" example:layout_position="center" android:tag="2" android:rotation="0" android:layout_marginBottom="440px"/> <ImageView android:id="@+id/b0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/f_xun" example:layout_position="center" android:rotation="45" android:layout_marginBottom="314px" android:layout_marginLeft="314px"/> <ImageView android:id="@+id/c0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/d_kan" android:rotation="90" example:layout_position="center" android:layout_marginLeft="440px"/> <ImageView android:id="@+id/d0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/g_gen" example:layout_position="center" android:rotation="135" android:layout_marginTop="314px" android:layout_marginLeft="314px"/> <ImageView android:id="@+id/e0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/b_kun" android:rotation="180" example:layout_position="center" android:layout_marginTop="440px"/> <ImageView android:id="@+id/f0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/e_zhen" example:layout_position="center" android:rotation="225" android:layout_marginTop="314px" android:layout_marginRight="314px"/> <ImageView android:id="@+id/g0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/c_li" android:rotation="270" example:layout_position="center" android:layout_marginRight="440px"/> <ImageView android:id="@+id/h0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/h_dui" example:layout_position="center" android:rotation="315" android:layout_marginBottom="314px" android:layout_marginRight="314px"/> </app_ui.customlayout>
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算