Dome小总结

编程入门 行业动态 更新时间:2024-10-28 06:23:11

<a href=https://www.elefans.com/category/jswz/34/1721125.html style=Dome小总结"/>

Dome小总结

前言
花了业余时间做了一个很low也比较简单的小dome,但是其实做的时候并不是自己想的那么简单,到也学了不少新的知识,把一些有用的知识点总结一下吧,不然又石沉大海了。
Dome地址
聚文小Dome:
- 卡片式布局
- 用recyclerview代替了listview
- Snackbar的详细用法
- 分享到QQ微信等聊天平台
- Webview的刷新等功能
- Toolbar的设置

recyclerview

recyclerview是listview的代替品并且功能也比listview要强大
布局:

    <android.support.v7.widget.RecyclerViewandroid:id="@+id/recycler_view"android:layout_width="match_parent"android:layout_height="match_parent" />

在代码中的引用和它的适配器

public class Zixun_Adapter extends RecyclerView.Adapter<Zixun_Adapter.ViewHolder>{private List<UserZX.ResultBean.DataBean> list;private Context context;public Zixun_Adapter(List<UserZX.ResultBean.DataBean> list) {this.list = list;}static class ViewHolder extends RecyclerView.ViewHolder{ImageView imageView;TextView title,name,timer;CardView cardView;public ViewHolder(View itemView) {super(itemView);
//获取idcardView= (CardView) itemView;imageView= (ImageView) itemView.findViewById(R.id.one_img);title= (TextView) itemView.findViewById(R.id.one_title);name= (TextView) itemView.findViewById(R.id.one_name);timer= (TextView) itemView.findViewById(R.id.one_timer);}}@Overridepublic ViewHolder onCreateViewHolder(final ViewGroup parent, final int viewType) {context=parent.getContext();View view = LayoutInflater.from(context).inflate(R.layout.fragment_zixun_zi_item, parent, false);final ViewHolder holder = new ViewHolder(view);
//        设置点击监听这是它的子条目点击事件holder.cardView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {
//                获取具体的某个位置int position = holder.getAdapterPosition();Intent intent = new Intent(context, Web_Activity.class);intent.putExtra("data",list.get(position).getUrl());context.startActivity(intent);}});return holder;}@Overridepublic void onBindViewHolder(ViewHolder holder, int position) {holder.timer.setText(list.get(position).getDate());holder.name.setText(list.get(position).getAuthor_name());holder.title.setText(list.get(position).getTitle());String url = list.get(position).getThumbnail_pic_s();Glide.with(context).load(url).into(holder.imageView);}@Overridepublic int getItemCount() {return list.size();}}
//适配Zixun_Adapter adapter = new Zixun_Adapter(list);recyclerview.setAdapter(adapter);
webview的使用

webview是加载网页的控件他内部也有很多使用的小细节比如刷新,是否在本浏览器里面打开复制链接等。。

public class Web_Activity extends AppCompatActivity {private WebView webView;private ProgressBar progressbar;private Toolbar toolbar;private String data;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_web_);webView= (WebView) findViewById(R.id.web_view);progressbar= (ProgressBar) findViewById(R.id.progressbar);toolbar= (Toolbar) findViewById(R.id.web_toolbar);
//        设置支持ToolbarsetSupportActionBar(toolbar);//对Toolbar进行具体的设置ActionBar actionBar = getSupportActionBar();if (actionBar!=null){actionBar.setDisplayHomeAsUpEnabled(true);}Intent intent = getIntent();data = intent.getStringExtra("data");webView.getSettings().setJavaScriptEnabled(true);
//        在本浏览器里面打开而不是跳转到外面的浏览器webView.setWebViewClient(new WebViewClient(){@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {view.loadUrl(url);return true;}});
//        重写加载进度条的方法webView.setWebChromeClient(new WebChromeClient(){@Overridepublic void onProgressChanged(WebView view, int newProgress) {progressbar.setProgress(newProgress);if (newProgress==100){progressbar.setVisibility(View.GONE);}else {progressbar.setVisibility(View.VISIBLE);}}//        设置标题@Overridepublic void onReceivedTitle(WebView view, String title) {super.onReceivedTitle(view, title);setTitle(title);}});webView.loadUrl(data);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.web,menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()){
//            返回到上一个Activitycase android.R.id.home:finish();break;case R.id.share://分享的方法Intent share= new Intent();share.setAction(Intent.ACTION_SEND);share.setType("text/plain");share.putExtra(Intent.EXTRA_TEXT,data);startActivity(Intent.createChooser(share,getTitle()));
//                Toast.makeText(this,"分享界面",Toast.LENGTH_LONG).show();break;case R.id.shuaxin:
//                实现刷新的方法调用Webview的方法webView.reload();Toast.makeText(this,"刷新成功",Toast.LENGTH_LONG).show();break;case R.id.open://在别的浏览器里面打开Intent intent=  new Intent();intent.setAction(Intent.ACTION_VIEW);intent.setData(Uri.parse(data));startActivity(intent);
//                Toast.makeText(this,"在浏览器中打开",Toast.LENGTH_LONG).show();break;case R.id.copy:
//                赋值到剪切板的过程ClipboardManager manager= (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);manager.setText(data);Snackbar.make(toolbar,"已复制到剪切板",Snackbar.LENGTH_LONG).show();break;}return true;}

这里的Webview和Toolbar是联合使用的,通过点击toolbar上面的按钮来控制。其实都是一些零碎的知识点但是 却很实用。
还有就是对网络请求时会出现乱码的问题,那是由于定义读取字节1024时,转化时出现的问题这里我们可以这样将字节流转化为字符流来解决该问题

     StringBuffer sb = new StringBuffer();
//将字节流转化为字符流解决乱码问题char[] buffer = new char[1024];int len=-1;InputStream in = conn.getInputStream();InputStreamReader reader = new InputStreamReader(in, "utf-8");while ((len=reader.read(buffer))!=-1){sb.append(new String(buffer,0,len));}in.close();return sb.toString();

查询
搜索是一个APP重要的部分这里我们可以 通过给Toolbar里面布局一个editor,并且通过对数据库的模糊查询来实现查询操作。
end
感觉如果想要做一个帅帅的APP,时尚的审美观加上很强的代码功底。so继续努力!

更多推荐

Dome小总结

本文发布于:2024-03-08 14:22:05,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1721122.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Dome

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!