Android 开发

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
































 

跟不上了  弃坑

 15.activity和fragment通信 回调接口

创建一个ifragemntcallback{   activity ->fragment }{   activity<-fragment }

interface  ifragemntcallback{

void sendmsgtoactivity(String sting);

string getmsgfromactivity(string msg);

}

 

 

activity 中 new一个fragemnetcallback

bf.setfragemntcallback(new ifragemntcallback)

{

  public void sendmsgtoactivity(String sting){}

  public string getmsgfromactivity(string msg){}

}

 

fragment中

private ifragmentcallbakc fragmentallback;

public void setfragemntcallback(ifragemntcallback callback)

{

fragmentallback =callback;

}

 

 

 

 

 

 

 





 

15.activity和fragment通信

Bundle  可以绑定数据的独立的类

 

 

 

 

 




14.fragment 的产生

 

多个activity  使用同一个fragment

同时独立接受输入

但是生命周期受限于委托activity

 

 

 

 

 

fragment 使用方法

mainactivity.xml

 

 

 添加一个空白的fragment 类  其中oncreate 和onCreateview 是生命周期函数

 

 

 

 

 

 

 

 

 

 

fragment 解析xml  和activity 有点不同

activity 在oncreate view 中解析


public class BlankFragment extends Fragment {
private View root;
private Button button;
private TextView textview;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
if(root == null){
root=inflater.inflate(R.layout.fragment_blank, container, false);
}
textview=root.findViewById(R.id.tv);
button=root.findViewById(R.id.btn);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//注意这里是对象的方法 不是id.方法
textview.setText("i am fine thank you and you");
}
});
return root;//注意返回root??????
}
}

 

在一个activity 中田间两个fragment

xml

<Button
android:id="@+id/btn1"
android:text="@string/change"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/btn2"
android:text="@string/replace"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>

<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#2222ff"
android:id="@+id/frgmt">
</FrameLayout>





public class MainActivity extends AppCompatActivity implements View.OnClickListener{

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn1 = findViewById(R.id.btn1);
Button btn2 = findViewById(R.id.btn2);
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);

}

@Override
//之前用的是btn1.setOnClickListener new 匿名内部类
//extends AppCompatActivity implements View.OnClickListener 然后implement 类来实现 这个函数
public void onClick(View view) {
switch (view.getId())
{
case R.id.btn1:
replaceFragment(new BlankFragment1());
//自己创建这个函数
//new 一个fragment 对象 所以需要新建frament class
break;
case R.id.btn2:
replaceFragment(new ItemFragment());
//自己创建这个函数
//new 一个fragment 对象 所以需要新建frament class
break;
}

}

//这个函数做的事情 就是将参数 fragement 替换到mainactivity中的fragment布局
private void replaceFragment(Fragment fgmt) {
//经过 管理器 触发器
FragmentManager fm=getSupportFragmentManager();
FragmentTransaction fts=fm.beginTransaction();//触发器
fts.replace(R.id.frgmt,fgmt);
//fts 中间会有一个管理栈 用于存储页面
fts.commit();//最后还需要提交事件

}
}

 

 

 

 

 

 

 

 

 

 

 

 

 





 

13.viewpage 

先创建两个layout

 

 然后添加一个viewpage

 

 

 

然后需要新建要给adaptor

 

 

 

 

 

 

 

 

 

mainactivity

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


LayoutInflater lf=getLayoutInflater().from(this);
View view1=lf.inflate(R.layout.layout1,null);
View view2=lf.inflate(R.layout.layout2,null);
View view3=lf.inflate(R.layout.layout3,null);
List<View> viewList =new ArrayList<>();
viewList.add(view1);
viewList.add(view2);
viewList.add(view3);

ViewPager viewPager =findViewById(R.id.vp);
myadapter mad=new myadapter(viewList);//这里的adapter 是自己构建方法
viewPager.setAdapter(mad);


getLayoutInflater().from(this);
}
}

自己的adapter 类

public class myadapter extends PagerAdapter {
private List<View> mylistview;

public myadapter(List<View> mylistview) {
this.mylistview = mylistview;
}

@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
container.addView(mylistview.get(position),0);
return mylistview.get(position);
}

@Override
public int getCount() {
return mylistview.size();
}

@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view==object;
}

@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView(mylistview.get(position));
}
}

 













 

12   22-2 跳过

 

 

 

 

 

 

 

 




 

11. linerlayout

 

 

 

 

 

 

 

 

 

 

 

 

 

 




 

10.popupwindow  跳过

 




 

9.对话框

 

 可以在layout中自定义view

 

 

 

 

 




 

8.toolbar

 

 

 

 toolbar 就是替换actionbar的   noActionbar

 

 

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar td=findViewById(R.id.td);
td.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Log.e(TAG, "onClick: toolbarl is colicked" );
String TAG="zhekun";
Log.e(TAG, "onClick: toolbarl is colicked");
}
});

 

 

<androidx.appcompat.widget.Toolbar

android:id="@+id/td"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="#00ddff"

app:logo="@drawable/mail"
app:navigationIcon="@drawable/back_24"
app:title="Detail"
app:titleMarginStart="150dp"
app:titleTextColor="@color/black"/>

标题居中

 

 

 





7.通知管理器  跳过

 

 

 

 




 

6.progressbar

 

 

 进度条1

 

 

 

 进度条样式2

 

 添加一个onclick  load

 

 interminate  只会显示滚动 不显示进度

 

 

 

5.imageview

 

 

 

 

 

 

点击切换图片

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView ssrc= findViewById(R.id.src);

ssrc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
count++;
if(count%2==1) {
ssrc.setImageResource(R.drawable.b);
}else
{
ssrc.setImageResource(R.drawable.a);
}

}
});

 




 

4.edittext

 

 

 

 background 是那根横线

padding  是内容和边框的填充距离

 

 

 

 

 




 

3.button

 

 

 

linerlayout  height

  button 200dp  100dp      点进去发现是继承自textview

 

 

 

 

 

 

 两个selector 写法类似 state_press 就是按下的状态

 还有就是  这个theme似乎要修改一下才有变化

 

 

 

 

new drawable file 

图片选择器  selector  <item  android:drawable[img]

第一个 stated  press true  按下的状态  是显示第一张照片

然后调用  这个资源

 

 

 

 

 

 同时颜色选择器 一样的写法 

新建一个color文件夹  添加选择器

 

 

 button的三个事件

 

 

 

 

private static final String TAG = “zhekun” ;
可以添加函数区间的变量

 

 

 

 

 

自己写的方法  onclick  需要注释掉 clicklistener

 

 




 

2.跑马灯实现TEXTVIEW

注意文字的写法,实在res 文件夹中

 

 

重点是文字够长,同时宽带设置为matchparent

 

 但是会自动换行所以需要 singleline    还有修改他的省略方式 marquee  还有marqueeilimt

 

 这些是省略号的位置   

还要设置不同的获取焦点的位置   以及一个属性clickable=true//或者自定义textview

 

 自定义textview

 

 

继承自textview 同时实现前面三个构造方法

 

 并且重写isfocused  return true

 

 

 

 同时界面元素 也要修改了  用自定义的名字

 

 第三种方法是在界面xml添加一个属性

 

 

 2.1

方法一

<TextView
android:layout_width="match_parent"
android:text="@string/hello"
android:layout_height="200dp"
android:height="200dp"
android:textSize="100sp"
android:singleLine="true"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:marqueeRepeatLimit="marquee_forever"
>
<requestFocus/>

 

 




 

 1.textview控件

 

 

 

快捷键写法 

<LinerLayout><>

  wi 回车

alter enter  ->rerannge attribuate 调整布局

 

 

 <LinerLayout    layout width/height /orientation    容器

        textview 控件    layout_width

               layout_height   control+leftmouse 跳转属性   

                    dp  / mathchparent(与容器同样大)

 

<Textview 

  android:id="@id/tv_one"   java代码获取空间对象的方法

  android:text="hello world"  control+滚轮 设置大小

  android:layout_height   ="200dp"   

  android:tayout_height   ="200dp"    

  android:textsize  ="200sp"    百分比的单位    

  android:textcolor  ="@color/red "或者 #FF003322    

 

 

 java 代码中也可以设置  同时优先级高

 

 

 

 

 

 

<fragment
android:id="@+id/fgmt"
android:name="com.example.fragment.BlankFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
posted @ 2022-04-30 15:16  张喆坤  阅读(66)  评论(0编辑  收藏  举报